最佳答案
引言
Python作為一種富強的編程言語,廣泛利用於數據分析、人工智能、收集開辟等多個範疇。算法是編程的核心,控制算法不只可能進步編程效力,還能處理複雜成績。本文將帶你經由過程實戰示例,輕鬆入門Python算法。
第1章:Python算法基本
1.1 Python基本語法
在開端進修算法之前,我們須要熟悉Python的基本語法。包含變量、數據範例、運算符、把持構造等。
變量跟數據範例
# 變量
x = 10
y = "Hello, World!"
# 數據範例
name = "Alice"
age = 25
height = 1.75
is_student = True
運算符
# 算術運算符
result = 5 + 3 # 8
result = 5 - 3 # 2
result = 5 * 3 # 15
result = 5 / 3 # 1.666...
result = 5 // 3 # 1 (整除)
result = 5 % 3 # 2 (取余)
# 比較運算符
result = 5 > 3 # True
result = 5 < 3 # False
result = 5 == 3 # False
result = 5 != 3 # True
# 邏輯運算符
result = True and False # False
result = True or False # True
result = not True # False
把持構造
# 前提語句
if x > 10:
print("x大年夜於10")
elif x == 10:
print("x等於10")
else:
print("x小於10")
# 輪回語句
for i in range(5):
print(i)
# 輪回語句(while)
i = 0
while i < 5:
print(i)
i += 1
1.2 數據構造
Python中常用的數據構造包含列表、元組、字典跟湊集。
列表
# 列表
numbers = [1, 2, 3, 4, 5]
print(numbers[0]) # 輸出:1
numbers.append(6) # 增加元素
print(numbers) # 輸出:[1, 2, 3, 4, 5, 6]
元組
# 元組
tuple1 = (1, 2, 3)
print(tuple1[0]) # 輸出:1
字典
# 字典
person = {"name": "Alice", "age": 25}
print(person["name"]) # 輸出:Alice
湊集
# 湊集
set1 = {1, 2, 3, 4, 5}
print(set1) # 輸出:{1, 2, 3, 4, 5}
第2章:常用算法實戰
2.1 排序算法
冒泡排序
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
# 測試冒泡排序
numbers = [5, 3, 8, 6, 2]
sorted_numbers = bubble_sort(numbers)
print(sorted_numbers) # 輸出:[2, 3, 5, 6, 8]
疾速排序
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
# 測試疾速排序
numbers = [5, 3, 8, 6, 2]
sorted_numbers = quick_sort(numbers)
print(sorted_numbers) # 輸出:[2, 3, 5, 6, 8]
2.2 查抄算法
線性查找
def linear_search(arr, target):
for i in range(len(arr)):
if arr[i] == target:
return i
return -1
# 測試線性查找
numbers = [5, 3, 8, 6, 2]
target = 8
index = linear_search(numbers, target)
print(index) # 輸出:2
二分查找
def binary_search(arr, target):
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
# 測試二分查找
numbers = [1, 3, 5, 7, 9]
target = 7
index = binary_search(numbers, target)
print(index) # 輸出:3
第3章:算法優化
3.1 時光複雜度
算法的時光複雜度是衡量算法效力的重要指標。罕見的時光複雜度有O(1)、O(logn)、O(n)、O(nlogn)、O(n^2)等。
3.2 空間複雜度
算法的空間複雜度是指算法運轉過程中常設佔用存儲空間的大小。
3.3 優化技能
- 避免不須要的輪回
- 利用合適的數據構造
- 盡管增加遞歸挪用
- 利用內置函數跟庫函數
總結
經由過程本文的進修,信賴你曾經對Python算法有了開端的懂得。控制算法是進步編程才能的關鍵,盼望你能經由過程實戰練習,壹直晉升本人的算法程度。