读书人

插入排序(Python),该怎么处理

发布时间: 2012-06-10 14:03:15 作者: rapoo

插入排序(Python)
写了个插入排序,大家看看有没有更好的写法

Python code
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)


[解决办法]
直接原地排就可以
Python code
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 也可以比较有效的进行排序
[解决办法]
Python code
 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)  
[解决办法]
Python code
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)); 

读书人网 >perl python

热点推荐