排序

来源:互联网 发布:sql注入语句示例大全 编辑:程序博客网 时间:2024/05/22 10:20

排序过程就是进行比较和交换过程
而时间复杂度就与比较和交换的次数相关
影响时间复杂度的主要因素为比较的次数。


冒泡排序:
改良的冒泡排序,当一轮循环中没有交换就结束排序。

冒泡排序特征第一趟排序之后最大值会在最后面,第二趟排序会在次后面
选择排序特征第一趟排序之后最小值会在最前面,第二趟排序会在次前面
插入排序特征第一趟排序范围0~1,前一个数比后一个数小,第二趟排序范围0~2,前三个数小大排列
快速排序以一个值为分界点


快速排序:
快速排序是以第一个为基准,所有比它小的元素在左边,比它大的元素在右边
快排还需要分块排序,浪费时间
快排在完全无序的情况下效果最好,时间复杂度为O(nlogn),在有序情况下效果最差,时间复杂度为O(n^2)

四个选项都是同样的数组元素,若完全有序,应为2345679
每经过一趟快排,轴点元素都必然就位,也就是说,一趟下来至少有1个元素在其最终位置。这个元素可能在任何位置,不一定在最后。


基数排序:

对给定的关键字序列110, 119, 007, 911, 114, 120, 122 进行基数排序, 则第 2 趟分配收集后得到的关键字序列是( )。答案:007, 110, 911, 114, 119, 120, 122

基数排序是通过“分配”和“收集”过程来实现排序。
1) 首先根据个位数值(只看个位)来排序:
110 120 911 122 114 007 119
2) 再看十位(只看十位数值大小)来排序:
007 110 911 114 119 120 122
3) 最后看百位:
007 110 114 119 120 122
所以 第 2 趟分配收集后得到的关键字序列是 { 007 110 911 114 119 120 122 }。


拓扑排序:

对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若

如果只想得到1000个元素组成的序列中第5个最小元素之前的部分排序的序列,用()方法最快答案:堆排序

堆排序;

构造堆为线性时间,取前5为5 * log2(1000)时间。
计数排序是特殊的桶排序,每个桶的长度为1。所以辅助数组的长度为(max-min)/1+1

原创粉丝点击