python中几种常用的排序算法 1.插入排序 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序;首先将第一个作为已经排好序的,然后每次从后的取出插入到前面并排序; 时间复杂度:O(n²) 空间复杂度:O(1) 稳定性:稳定 def insert_sort(ilist): for i in range(len(ilist)): for j in range(i): if ilist[i] < ilist[j]: ilist.insert(j, ilist.pop(i)) break return ilist ilist = insert_sort([4,5,6,7,3,2,6,9,8]) print ilist 2.希尔排序 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止 时间复杂度:O(n) 空间复杂度:O(n√n) 稳定性:不稳定 def shell_sort(slist): gap = len(slist) while gap > 1: gap = gap // 2 for i in range(gap, len(slist)): for j in range(i % gap, i, gap): if slist[i] < slist[j]: slist[i], slist[j] = slist[j], slist[i] return slist slist = shell_sort([4,5,6,7,3,2,6,9,8]) print slist 3.冒泡排序 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成