将各种排序算法与最好和最坏的情况进行比较。
不知道怎么回答,分类太多了。下面是一些简单的,希望对你有帮助!
比如对N个顺序存储元素进行排序,a[0]充当“哨兵”(即a[0]不存储数据,而是作为辅助存储空间)。
1直接插入排序:最小比较数为n-1;最多(n-1)(n+2)/2
最小移动次数为0;最多(n-1)(n+4)/2
使用辅助存储空间,这是稳定的排序;
2折插入排序:最小比较数与最大数相同,都是n*log2n(其中2为底,底表示相同)。
最小移动次数为0,最大时间复杂度为O(N2);(n的平方,下面也有表示);
使用辅助存储空间,这是稳定的排序;
3冒泡排序:最小比较为:n-1次,最大时间复杂度表示为o(N2);
最小移动次数为0,最大时间复杂度表示为O(n2)。
使用二级存储空间,这是一个稳定的排序;
4简单的选择排序:比较的个数差别不大,都是n(n-1)/2;
最小移动次数为0,最大移动次数为3(n-1);
使用二级存储空间,这是一个稳定的排序;
5.快速排序:比较和移动次数的最小时间复杂度表示为O(n * log2n);
比较和移动次数最多的时间复杂度表示为O(N2);
所使用的辅助存储空间至少为log2n,至多为n的平方;是一种不稳定的排序;
6堆排序:比较和移动次数没有区别,都是O(n * log2n);
使用辅助存储空间是一种不稳定的排序;
7 2路归并排序:比较和移动次数没有区别,都是O(n * log2n);
需要n个辅助存储空间,这是一个稳定的排序;
此外,还有许多排序方法,如希尔排序、基数排序、2路插入排序等。这里就不一一列举了。希望对你有帮助!!