插入排序(Python)
写了个插入排序,大家看看有没有更好的写法
def Bubble(): arr1 = [11, 3,2,8,10] print arr1[2] arr1[2] = 123 print arr1[2] for a in range(len(arr1)): for b in range(len(arr1)): if (arr1[a] > arr1[b]): c = arr1[a] arr1[a] = arr1[b] arr1[b] = c for k in arr1: print k class Base: def __init__(self): self.data = [] def InsertSort(self, x): arr1 = [11, 3,2,8,10] b = arr1[0] for a in range(len(arr1)): for c in range(a): if arr1[a] < arr1[c]: d = arr1[c] arr1[c] = arr1[a] arr1[a] = d for k in arr1: print k if __name__ == '__main__': base = Base() base.InsertSort(1)
arr = [11,3,2,8,10]for j in range(1,len(arr)): cur = arr[j] t = j-1 while t>=0 and arr[t]>cur: arr[t+1] = arr[t] arr[t] = cur t -= 1print arr
[解决办法]
系统自带 bisect 也可以比较有效的进行排序
[解决办法]
def insertSort(self,L): size = len(L) for i in range(1,size): fv = L[i] j = i while(j>=1): if fv < L[j-1]: L[j] = L[j-1] else: break j=j-1 L[j] = fv print(L)
[解决办法]
from random import randint;def bubble(s): a = list(s); for i in range(len(a)-1, 0, -1): for j in range(0, i): if(a[j] > a[j+1]): a[j], a[j+1] = a[j+1], a[j]; return a;def insertion(s): a = list(s); for i in range(1, len(a)): j, temp = i, a[i]; while(j > 0 and temp < a[j-1]): a[j] = a[j-1]; j -= 1; a[j] = temp; return a;a = [randint(0, 9) for i in range(0, 10)];print(a);print(bubble(a));print(insertion(a));