排序算法之——交换类排序

2018-04-19  本文已影响0人  和女神经常玩

交换类排序的基本思想

对待排序列记录的关键字两两进行比较,只要发现两个记录为逆序就进行交换,直到没有逆序的记录为止。


冒泡排序

思想:每一趟依次比较相邻两个记录的关键字大小,如果逆序就交换位置,这样一趟下来满足顺序的最大记录或者最小记录必然冒出到最顶尖,重复多趟,直至完成排序。

平均时间复杂度:O(n^2)。

稳定性:稳定。

代码:


快速排序

思想:从待排序列中任意选择一个记录,以该记录的关键字作为“枢轴”,凡其关键字小于枢轴的记录均移动至该记录之前,反之,凡关键字大于枢轴的记录均移动至该记录之后。致使一趟排序之后,记录的无序序列R[1...n]将分割为左右两个子序列,然后分别对分割所得的两个子序列递归地进行快速排序,以此类推,直至每个子序列中只含一个记录为止。

平均时间复杂度:O(nlog2n)。注,当枢轴的选择为第一个记录或者最后一个记录的关键字时,如果待排序列有序的话,这种是最差的情况,时间复杂度为O(n^2),为避免这种问题,可选用中间位置(low+height)/2作为枢轴。

稳定性:不稳定。

代码:

上一篇 下一篇

猜你喜欢

热点阅读