关于快速排序。最核心的思想是,步骤一:选取一个Key 值,将所有比key小的值移动到key值左边,同理,将所有比key大的值移动到key值右边,步骤二:以Key值做分割线,key之前的数,重复步骤一,Key值之后的数,也重复步骤一,直到所有分割段都只剩一个数。最终实现排序
下边我将写出代码,并在适当地方写出注释,供大家参考
#include <iostream>using namespace std;
void Qsort(int a[],int low,int high) {
if(low >= high)
{
return; //这里写return ,是直接终结整个程序,但要注意主函数需定义为void ,否则会报错
}
int i,j,key,temp,t;
i = low;
j = high;
key = a[i];
temp = key;
while( i < j) { //当Low>high直接跳出程序,不再运行
while(i < j && a[j] >= key)
{
--j;
}
a[i] =a[j];
while(i < j && a[i] <= key )
{
++i;
}
a[j] = a[i];
}
a[i] = temp;/*枢轴记录到位*/
Qsort(a,low,i-1); //继续递归执行
Qsort(a,i+1,high);
}
int main() {
int a[] ={7,5,3,2,4,9,8,6,1};
Qsort(a,0,sizeof(a)/sizeof(0)-1); //sizeof()在此处是计算长度
for(int i=0;i<=sizeof(a)/sizeof(0)-1;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}