#coding:utf-8 import seed import times """插入排序 从第一个元素开始,该元素可以认为已经被排序 取出下一个元素,在已经排序的元素序列中从后向前扫描 如果该元素(已排序)大于新元素,将该元素移到下一位置 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 将新元素插入到该位置后 重复步骤2~5 """ numList = seed.getNum() @times.times def insertion(numList): newList = [numList[0]] print newList for index, i in enumerate(numList[1:]): for l in range(len(newList)): if newList[l] > i: newList.insert(l, i) break elif l == len(newList) - 1: newList.append(i) return newList print insertion(numList) #2万数字排序用时:21.4830000401s
#coding:utf-8 import seed import times """插入排序 从第一个元素开始,该元素可以认为已经被排序 取出下一个元素,在已经排序的元素序列中从后向前扫描 如果该元素(已排序)大于新元素,将该元素移到下一位置 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 将新元素插入到该位置后 重复步骤2~5 """ numList=seed.getNum() @times.times def insertion(numList): newList=[numList[0]] print newList for index,i in enumerate(numList[1:]): for l in range(len(newList)): if newList[l]>i: newList.insert(l,i) break elif l==len(newList)-1: newList.append(i) return newList print insertion(numList) #2万数字排序用时:21.4830000401s
#coding:utf-8 import seed import times """冒泡排序算法 冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 """ num = seed.getNum() @times.times def bubble(list): listCount = len(list) for time in range(listCount): time = listCount - time for i in range(time - 1): if list[i] > list[i + 1]: list[i], list[i + 1] = list[i + 1], list[i] return list print bubble(num) #2万数字排序用时:49.1860001087s
#coding:utf-8 import times import seed @times.times def count_sort(list): min = 2147483647 max = 0 # 取得最大值和最小值 for x in list: if x < min: min = x if x > max: max = x # 创建数组C count = [0] * (max - min +1) for index in list: count[index - min] += 1 index = 0 # 填值 for a in range(max - min+1): for c in range(count[a]): list[index] = a + min index += 1 return list print count_sort(seed.getNum())
#coding:utf-8 import times import seed @times.times def count_sort(list): min = 2147483647 max = 0 # 取得最大值和最小值 for x in list: if x < min: min = x if x > max: max = x # 创建数组C count = [0] * (max - min + 1) for index in list: count[index - min] += 1 index = 0 # 填值 for a in range(max - min + 1): for c in range(count[a]): list[index] = a + min index += 1 return list print count_sort(seed.getNum())
#coding:utf-8 import seed import times """冒泡排序算法 冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 """ num=seed.getNum() @times.times def bubble(list): listCount=len(list) for time in range(listCount): time=listCount-time for i in range(time-1): if list[i]>list[i+1]: list[i],list[i+1]=list[i+1],list[i] return list print bubble(num) #2万数字排序用时:49.1860001087s
#coding:utf-8 import seed import times """选择排序 在未排序序列中找到最小(大)元素,存放到排序序列的起始位置, 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。 重复第二步,直到所有元素均排序完毕。 """ @times.times def selection(list): n=len(list) for i in range (0,n): min = i for j in range(i+1,n): if list[j]<list[min]: min=j list[min],list[i]=list[i],list[min] return list print selection(seed.getNum()) #2万数字排序用时:22.3760001659s