请说出至少三种排序的思路,这三种排序的时间复杂度分别为 O(n*n) O(n log2 n) O(n + max)

1.O(n*n)冒泡排序(升序)
选择第1个和第2个数字,如果第1个>第2个则二者交换位置,之后选择第2个和第3个数字,类似交换处理,一轮下来后,最大的数字会冒泡到最后一位。接下来,忽略已经排好的数字,对剩下的数字进行新一轮排序,直到所有数字都排序完成。
2.O(n log2 n)快速排序
从数列中挑出一个元素称为基准;
重新排序数列,所有比基准值小的元素放在基准前面,所有比基准值大的元素放在基准后面(相等的数可以放在任一边);
递归的把小于基准值的子数列和大于基准值的子数列排序;
递归到最底部时,数列的大小是零或一,也就是已经排序好了。
3.O(n + max)基数排序
将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。

你可能感兴趣的:(请说出至少三种排序的思路,这三种排序的时间复杂度分别为 O(n*n) O(n log2 n) O(n + max))