标签:次数 info 建立 code 优化 很多 复杂 快速排序 直接插入
一、直接插入排序下面来看算法性能,时间复杂度为o(N*logN),空间复杂度为o(1),堆排序依然属于不稳定排序。
五、冒泡排序
1.原理
冒泡排序也把数组分成两个区间,无序区间[0,array.length-i-1],有序区间[array.length-i-1,array.length],每次按顺序从无序区间取出一个数,把它和后面的数一一进行比较,大数排后面,直到遍历完所有数。冒泡次数为array.length,需要比较的次数为array.length-i-1。
2.代码实现
下面来看算法性能,最坏时间复杂度为o(N^2),最好时间复杂度为o(N),平均时间复杂度为o(N^2),空间复杂度为o(1)。冒泡排序为稳定排序。因为在比较过程中,都是把大于它的数放在后面。
六、快速排序
1.原理
从待排序区间选择一个值,作为基准值,遍历整个待排序区间,将比基准值小的值放在它的左边,比它的值放在右边,左右两个小区间按照同样的方法处理,直到小区间的长度=1,或者长度为0,表示已经全部排好序。
2.代码实现
它的最坏时间复杂度为0(N^2),最好时间复杂度o(NlogN),平均时间复杂度o(NlogN),空间复杂度o(NlogN)。不稳定,可以看出它比前几个排序效率高了很多。
七、归并排序
1.原理
采用分治法,将已有序的子序列合并,先使每个子序列有序,再使每段序列有序,最后合并成一个有序数组。
2.代码实现
该排序算法的时间复杂度为o(NlogN),空间复杂度为o(N),稳定排序。
标签:次数 info 建立 code 优化 很多 复杂 快速排序 直接插入
原文地址:https://blog.51cto.com/14632675/2542537