插入排序
插入排序思想
遍历数组,遍历到i时,a0,a1...ai-1是已经排好序的,将ai从ai-1开始向前和每个比较大小,如果小于,则将此位置元素向后移动,继续向前比较,如果不小于,则放到正在比较的元素之后。从算法思想可以看出,当相等元素比较时,原来靠后的元素经过比较后还是在后边,所以插入排序是稳定的
插入排序代码
def insertionSort(arr):
for i in range(1,len(arr)):
key=arr[i]
j=i-1
while j>=0 and key<arr[j]:
arr[j+1]=arr[j]
j-=1
arr[j+1]=key
选择排序
选择排序思想
遍历数组,遍历到i时,a0,a1...ai-1是已经排好序的,然后从i到n选择出最小的,记录下位置,如果不是第i个,则和第i个元素交换,此时第i个元素可能会排到相等元素之后,造成排序的不稳定
def selectionSort(arr):
for i in range(len(arr)):
min=i
for j in range(i+1,len(arr)):
if arr[j]<arr[min]:
min=j
temp=arr[i]
arr[i]=arr[min]
arr[min]=temp