快速排序

来源:互联网 发布:32核cpu nginx进程 编辑:程序博客网 时间:2024/04/30 19:22
快速排序(QuickSort)
 
快排是种很猛的算法,对于大量无次序的数据进行排序时效率非常高,他的基本思想是:每一次都选取待排序序列的第一个关键字作为基准,使左边子区间所有关键字小于或等于基准,右边子区间所有关键字大于或等于基准。
1、确定右边子区间的时候让基准从最右边开始比较当发现有比其小的关键字时,令基准和该关键字交换。
2、当基准和右边区域的一个关键字交换过位置之后,再令基准同左边子区间关键字比较,从最左边开始比较,遇到比基准大的关键字时,令基准和该关键字交换。
3、依次循环第1步,第2步。直到左边子区间所有关键字小于或等于基准,右边子区间所有关键字大于或等于基准。
4、以上是第一次划分,之后重复前面3步。

例如:49  38  65  97  76  13  27  59 进行划分的步骤
(1)49和27交换   (27  38  65  97  76  13  49  59)
(2)49和65交换   (27  38  49  97  76  13  65  59)
(3)49和13交换   (27  38  13  97  76  49  65  59)
(4)49和97交换   (27  38  13  49  76  97  65  59)
第一次划分完成,结果为:(27 38  13  )49 ( 76  97  65  59),接着继续划分。
(1)27和13交换 ,76和59交换(13)38(27)49(59  97  65  76)  
(2)27和38交换 ,76和97交换13  27  38  49(59  76  65  97)
(3)76和65交换 13  27  38  49(59  65  76  97)
(4)13  27  38  49  (59  65)76(97)
(5)13  27  38  49  (59)(65)76 (97)
(6)13  27  38  49  59  65  76  97
 
快速排序性能:
1、 总比较次数最大值O(n^2)
2、 当文件的记录已按递增(或递减)排列时,快速排序所需的比较次数较多。
3、 最坏时间复杂度O(n2),最好时间复杂度O(nlgn);
4、 快排是不稳定的。 
原创粉丝点击