1.原理:
Divide: 随便选一个数作为基准数,把数组分成两个子列
Conquer: 分别两个子列进行排序
2.代码:
void quick_sort(int s[],int l,int r)
{
if(l < r)
{
int i = l, j = r, x = s[l]; //把数组的第一项定义为基准数,即把第一项挖空
while( i < j)
{
while( i < j && s[j] >= x) //从右端开始寻找比 X 小的数
j--;
if(i < j) //找到后把它移到左端
s[i++] = s[j];
while( i < j && s[i] <= x) //从左端开始寻找比 X 大的数
i++;
if( i < j ) //找到后把它移到右端
s[j--] = s[i];
}
s[i] = x;
quick_sort(s,l,i-1); //递归
quick_sort(s,i+1,r);
}
}