网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

快速排序的总结

快速排序的思想是分而治之,利用递归达到快速排序的效果

创新互联公司主营康县网站建设的网络公司,主营网站建设方案,重庆APP软件开发,康县h5微信小程序定制开发搭建,康县网站营销推广欢迎康县等地区企业咨询

首先要选定一个基准数,一般选择最左边的数为基准数,排序的目标就是让这个基准数的左边全小于这个基准数,右边全大于这个基准数。然后以这个基准数为分隔线,在左右两侧再次调用这个排序的函数,直到全部有序。简述过程:

以  8 9 4 7 2 6 首选

1. 选择两个哨兵 i,j 分别指向8,6,基准数为8

2.从j哨兵开始,因为j指向的6小于基准数8,不符合j指向的数都要大于8的要求,所以将j指向的数覆盖i指向的数,同时i指向的数变成9

6 9 4 7 2 6

3.此时i指向9大于基准数8,不符合基准数左边的都要小于基准数,右边的都要大于基准数,所以i指向的数覆盖j指向的数,同时j--,j指向7

6 9 4 7 2 9

重复以上步骤,直到 哨兵i 和 哨兵j相遇

4.最后一步将基准值放到中间 

代码实现:

void QuickSort(int a[], int low, int high)

{

int i = low, j = high;//每次i,j都指向最低一个元素,和最高一个元素

int temp = a[low];//每次选择最左边的数为基准数

while(i < j)//每次循环结束的条件是 i == j

{

while(i < j && a[j] >= temp) j--;//先从左边开始,找到小于基准数的数

if(i < j){

a[i] = a[j];

i++;

}//和i指向的数交换

while(i < j && a[i] <= temp) i++;//找到基准数左边大于基准数的数

if(i < j){

a[j] = a[i];

j--;

}//换到基准数右边去

}//以上执行完后,将基准数放到中间

a[i] = temp;

if(low < i)//如果是基准数左边的话

     QuickSort(a, low, i-1);//将最高位i-1

if(i < high)//如果是基准数右边的话

QuickSort(a, j+1, high);//最低位为基准位+1

}



文章名称:快速排序的总结
网页地址:http://bjjierui.cn/article/ggedep.html

其他资讯