您的位置:首页 > 编程语言 > C语言/C++

快速排序简单解释(C++)

2015-12-17 18:37 381 查看
直接上代码 代码和解释混合 具体解释每句代码的意思

至于快速排序的思想网上有很多 就不解释了

代码来自于程序员面试笔试宝典

#include<iostream>      //导入头文件
using namespace std;  //引用命名空间

void QuitSort(int *a,int low,int high)
{
//x用来存基准数
int x=0
//要先判读传入参数 是否合法 如果不和发就返回
if(low>=high)
return;
/*把第一数个当做基准数 这里有两个数i,j分别代表数组的最高位和最低位*/
int i=low;
int j=high;
x=a[low];
//每一次排序结束的标志就是当j不在大于i 这个时候所有的数都已经走过了一遍
while(i<j)
{
/*这个循环的作用就是判断最后一位是不是小于基准数 不是小于基准数就看前一位是不是小于基准数*/
while(i<j && a[j]>=x)
{
j--;
}
/*啊,终于找到比基准数小的了 这时候就把基准数放到数组的第一位吧 因为第一位已经被我们拿出来了 其实并没有拿走第一位 只是可以这么理解而已 不要忘记判断 这次排序是不是已经结束了*/
if(i<j)
{
a[i]=a[j];
i++;
}

//这个就是同理了 从前面找到一个比基准数大的 放到之前后面被拿走的那个数的位置
while(i<j && x>=a[i])
{
i++;
}
if(i<j)
{
a[j]=a[i];
j--;
}
}
a[i]=x;
//我们已经排序了第一次 就递归调用啦
QuitSort(a,low,i-1);
QuitSort(a,i+1,high);
}
int main()
{
int i=0;
int num[]={5,4,9,8,7,6,0,1,3,2};
int len=sizeof(num)/sizeof(num[0]);
QuitSort(num,0,len-1);
for(i;i<len;i++)
{
cout<<num[i]<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: