1.插入排序
思想:將一個(gè)數(shù)字序列引申為兩部分坠敷,第一部分為原始序列除去首數(shù)字,第二部分為變長(zhǎng)序列坝咐,初始值為原始序列的首數(shù)字铃剔,并不斷將原始序列的值逐一添入锣杂。將第一部分的每一個(gè)數(shù)字分別與第二部分比較,若結(jié)果偏小番宁,則交換數(shù)字位置。
import random
random.seed(12)
num = []
for i in range(10):
num.append(random.randint(1, 100))
print('原始序列:', num)
for j in range(1, len(num)):
key = num[j]
n = j - 1
print('第一部分:', key, ' 第二部分:', num[:n+1])
while n >= 0:
if key < num[n]:
num[n+1], num[n] = num[n], key
n -= 1
print('最終序列:', num)
結(jié)果:
原始序列: [61, 35, 85, 68, 86, 45, 19, 49, 2, 48]
第一部分: 35 第二部分: [61]
第一部分: 85 第二部分: [35, 61]
第一部分: 68 第二部分: [35, 61, 85]
第一部分: 86 第二部分: [35, 61, 68, 85]
第一部分: 45 第二部分: [35, 61, 68, 85, 86]
第一部分: 19 第二部分: [35, 45, 61, 68, 85, 86]
第一部分: 49 第二部分: [19, 35, 45, 61, 68, 85, 86]
第一部分: 2 第二部分: [19, 35, 45, 49, 61, 68, 85, 86]
第一部分: 48 第二部分: [2, 19, 35, 45, 49, 61, 68, 85, 86]
最終序列: [2, 19, 35, 45, 48, 49, 61, 68, 85, 86]
2.冒泡排序
思想:比較相鄰元素赖阻,如果順序錯(cuò)誤則交換元素位置蝶押。
def bubble_sort(num):
for m in range(len(num)):
for n in range(m+1, len(num)):
if num[n] < num[m]:
num[m], num[n] = num[n], num[m]
return num
3.歸并排序
思想: