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)
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...