将各种排序算法与最好和最坏的情况进行比较。

不知道怎么回答,分类太多了。下面是一些简单的,希望对你有帮助!

比如对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路插入排序等。这里就不一一列举了。希望对你有帮助!!