排序是計算機最為常見的操作之一,排序就是將一組雜亂無章的數據按照一定的規律排序起來(遞增或遞減),排序的對象可以是數字型,也可以是字符型(按照ASCII碼的順序排列)
N
個元素的列表中找最小值及下標,與第一個元素交換N-1
個元素中找出最小值及其下標,與第二個元素交換N-1
輪後即為排好序的數據# 選擇排序
list = [49, 38, 65, 97, 76, 13, 27, 49]
for i in range(len(list) - 1):
m = i
for j in range(i + 1, len(list)):
if list[j] < list[m]:
m = j
list[i], list[m] = list[m], list[i]
print(list)
N-1
輪,總共比較的輪數為(N-1)+(N-2)+...+2+1=N(N-1)/2
次選擇排序執行交換的次數是N-1
次
N
個元素中連續的兩個元素進行兩兩比較,如果兩者不滿足升序關系則交換。第一輪比較過後,最大數將下沉到列表最後。N-1
個元素之間進行兩兩比較,使第二大的數字沉到最後list = [77, 42, 35, 10, 22, 101, 5]
for i in range(len(list) - 1):
for j in range(len(list) - 1 - i):
if list[j] > list[j + 1]:
list[j], list[j + 1] = list[j + 1], list[j]
print(list)
# 改進
list = [77, 42, 35, 10, 22, 101, 5]
for i in range(len(list) - 1):
flag = True
for j in range(len(list) - 1 - i):
if list[j] > list[j + 1]:
list[j], list[j + 1] = list[j + 1], list[j]
flag = False
if flag:
break
print(list)
N-1
輪,總共比較次數為(N-1)+(N-2)+...+2+1=N(N-1)/2
次# 自定義函數的定義
def 函數名([形參列表]):
函數體
# 函數的調用
函數名([實參列表])
# 例子:定義一個求平均值的函數
def average(a, b):
return (a + b / 2)
temp = average(1, 3)
print(temp)
import math
def isPrime(a):
m = int(math.sqrt(a))
for i in range(2, m + 1):
if a % i == 0:
return False
return True
for i in range(2, 200):
if isPrime(i):
print(i)
def bubbleSort(a):
for i in range(len(a) - 1):
for j in range(len(a) - 1 - i):
if a[j] > a[i]:
a[j], a[i] = a[i], a[j]
list = [77, 42, 35, 10, 22, 101, 5]
bubbleSort(list)
print(list)
# 非遞歸方法
def factorial(n):
s = 1
for i in range(1, n + 1):
s = s * i
return s
# 遞歸方法
def factorial(n):
if n == 1:
return 1
else:
s = n * factorial(n - 1)
return s
print(factorial(3))
N/2
個元素的子列表N
個子列表)def merge(left, right): # 合並兩個列表
merged = []
i, j = 0, 0 # i和j分別作為left和right的下標
left_len, right_len = len(left), len(right) # 分別獲取左右列表的長度
while i < left_len and j < right_len: # 循環歸並左右子列表元素
if left[i] <= right[j]:
merged.append(left[i]) # 歸並左子列表元素
i += 1
else:
merged.append(right[j]) # 歸並右子列表元素
j += 1
merged.extend(left[i:]) # 歸並左子列表剩余元素
merged.extend(right[j:]) # 歸並右子列表剩余元素
print(left, right, merged) # 跟蹤調試
return merged # 返回歸並好的列表
def mergeSort(a): # 歸並排序
if len(a) <= 1: # 空或者只有一個元素,直接返回列表
return a
mid = len(a) // 2 # 列表中間位置
left = mergeSort(a[:mid]) # 歸並排序左子列表
right = mergeSort(a[mid:]) # 歸並排序右子列表
return merge(left, right) # 合並排好序的左右兩個子列表
a = [98, 23, 11, 10, 33, 42]
temp = mergeSort(a)
print(temp)
python語言系統提供的排序算法,底層就采用了歸並排序算法實現
a = sorted([24, 8, 10, 35])
print(a)
# [8, 10, 24, 35]
a.sort(reverse=True)
print(a)
# [35, 24, 10, 8]
b = sorted(a)
print(b)
# [8, 10, 24, 35]
c = sorted(a, reverse=True)
print(c)
# [35, 24, 10, 8]
項目介紹隨著社會的發展,人們生活水平的提高,Watching
Summarize the problems related