int a[101];//待排序数组
int n;//待排序数组的长度
void quicksort(int left, int right){//left=0,right=n-1
int i,j,base;
i = left;
j = right;
if (left>right) return ;
// 1.选定一个中标点
base = a[left];
//2.如果左右下标相遇,就break
while(left != right){
// 3.右下标开始往左寻数,找一个比中标点小的数
while(left<right && a[right]>=base) right--;
// 4.交换数据,因为a[left]已经被base记录,不怕丢失
a[left] = a[right];
// 5.左标开始往右寻数,找一个比中标点大的数
while(left<right && a[left]<=base) left++;
// 6.交换数据,因为a[right]已经被base记录,不怕丢失
a[right] = a[left];
}
// 7.base的数据还给中标点
a[left] = base;
// 8.递归
quicksort(i, left-1);
quicksort(left+1, j);
return;
}
快速排序算法
最新推荐文章于 2024-07-18 22:30:07 发布