记录一些基本排序算法,全当是复习巩固了。
1:选择排序
核心思想:每一次都从无序的序列中挑选中最小值,并把它放到相应的位置上。
假设有一堆数字卡片,卡片是无序排列的,现在需要按照卡片上数字从小到大排列。
算法步骤:
1. Find the smallest card. Swap it with the first card.
2. Find the second-smallest card. Swap it with the second card.
3. Find the third-smallest card. Swap it with the third card.
4. Repeat finding the next-smallest card, and swapping it into
the correct position until the array is sorted.
step1、找出数字最小的卡片,然后把它放到第一个位置
step2、找出数字第二小的卡片,然后把它放到第二个位置上
step3、找出数字第三小的卡片,然后把它放到第三个位置上
step4、重复上述过程直到满足要求
代码实现:
def selectionsort(lt):
for i in range(len(lt)):
temp = lt[i]
tempid = i
j = i+1
while j < len(lt):
if temp > lt[j]:
tempid = j
temp = lt[tempid]
j = j+1
lt[i], lt[tempid] = lt[tempid],lt[i]
print lt
lt = [2,6,12,9,20,4,67,23,89]
selectionsort(lt)
算法时间复杂度 ,空间复杂度。
2、插入排序
在已经排好序的序列中,插入新的元素。
代码:
def InsertionSort(l):
for j in range(1,len(l)):
key = l[j]
i = j-1
while i >= 0 and l[i] > key:
l[i+1] = l[i]
i = i-1
l[i+1] = key
return l
A = [31,41,59,26,41,58]
b = InsertionSort(A.copy())
算法时间复杂度 ,空间复杂度。