新闻  |   论坛  |   博客  |   在线研讨会
快速排序
四弦 | 2012-09-23 17:31:02    阅读:1415   发布文章

快速排序对冒泡排序有较大改进,它的基本思想是:通过一趟排序将待排序记录分割成两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 假设待排序的序列为 r[low],r[low+1],......,r[high],任选一个记录,通常是第一个记录 r[low] 为枢轴(pivot),然后将所有关键字比枢轴大的记录都安置在枢轴之后,所有比枢轴小的记录都安置在枢轴前面,以枢轴最后落点位置pos为分界点,将序列分割成两个序列:r[low],r[low+1],.....,r[pos-1]和r[pos+1],r[pos+2],.....,r[high],这个过程称为一趟快速排序或一次划分。具体做法如下代码所示: [cpp] view plaincopy /* * 对记录进行一趟快速排序(划分) */ static int Partion(int *sq,int low,int high){ /*以第一个记录为枢轴,并非一定要第一个记录作枢轴*/ int pivotkey=sq[low]; while(lowpivotkey) ){ high--; } sq[low]=sq[high]; /*从前往后找到一个比枢轴大的记录调整到后面*/ while( (low

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
磨剑是为了出剑
最近文章
二分插入排序
2012-09-23 17:32:20
直接插入排序
2012-09-23 17:31:50
快速排序
2012-09-23 17:31:02
推荐文章
最近访客