n个数有n!中排列方式,有序(升序 1 2 3 4 5)(降序 5 4 3 2 1)只有两种,进行穷举会有n!的时间复杂度,对于量子计算机,则可以一下完成,但不太明白如何测量得出正确结果。以下排序算法对于升序。
假设把n个数当成一列数,对每个数来说,前面不应有比自己大的数,最简单的排序算法就是从第二个数开始,把比自己大的数都移到自己的后面,这种方式最坏的结果就是一开始是降序排序,要移动次,也就是复杂度为O(n^2)。这个算法等价于插入排序。
冒泡排序算法和快速排序的缺点有:重复比较,实际上,每个数都和每个数比较了一次,这应该是最慢的算法了吧!冒泡算法,选择算法都是如此。
插入排序利用了排序的顺序关系,减少了比较次数,在插入排序的基础上,还有希尔排序。
希尔排序是把数据分成小组排序,可参考:图解排序算法(二)之希尔排序 - dreamcatcher-cx - 博客园 (cnblogs.com)