摘要:
希尔排序算是插入排序的一种,也被称为缩小增量排序和分组插入排序。 希尔排序的最优时间复杂度为O(nlogn),递归的时间复杂度为O(logn),最坏时间复杂度为O(n**2)。 def shellsort(alist): n=len(alist) if n<=1: return alist # 分组 阅读全文
摘要:
归并排序是采用分治算法的典型应用。 归并排序就是讲无序队列拆分为两个小组,组内的元素先进行排序,然后组间的元素逐个比较,把小的元素依次放在新的队列中,直到队列全部有序。 归并排序的最优时间复杂度为O(nlogn),递归的时间复杂度为O(logn),最坏时间复杂度为O(nlong) # 分组函数 de 阅读全文
摘要:
快速排序,又称划分交换排序,从无序队列中挑取一个元素,把无序队列分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 快速排序的最优时间复杂度为O(nlogn),递归的时间复杂度 阅读全文
摘要:
插入排序是一种比较简单的排序算法,先定义一个有序队列,然后把无需队列里的第一个元素放到有序队列的合适的位置(就是讲元素放进去以后有序队列必须还是有序的),重复操作知道所有元素都 添加到有序队列中。 插入排序的最优时间复杂度为O(n),最坏时间复杂度为O(n**2) def insertsort(al 阅读全文
摘要:
选择排序是一种比较简单和直观的排序算法,就是将无序队列最小的元素挑选出来然后和无序队列的头部元素进行替换,最终得到一个有序队列。 选择排序的最优时间复杂度为O(n**2),最坏时间复杂度为O(n**2), def chociesort(alist): n=len(alist) if n<=1: re 阅读全文
摘要:
冒泡排序是最常见的一种排序算法,也是很简单的一种排序算法。 相邻的元素进行两两比较,如果是升序则小的在左,大的在右;降序的话,反之。在经过数次比较循环,最终达到一个有序序列。 冒泡排序最优时间复杂度为O(n),最坏时间复杂度为O(n**2) 冒泡排序的原理可以种一张图来解释。 首先是相邻的元素进行两 阅读全文