运行结果:
运行代码;
#include <stdio.h>
//交换两个数
void change(int *a,int *b)
{
*a ^= *b;
*b ^= *a;
*a ^= *b;
}
//快速排序
int quick_sort(int *arr,int len)
{
//数组长度过小
if(len <= 1) return 0;
//选择一个基准
//arr[0]
//定义两个游标分别在近端和远端
int i = 0,j = len-1;
while(j > i)
{//先移动远端
while(*arr <= arr[j] && j > i) j--;
while(*arr >= arr[i] && j > i) i++;
if(i<j) change(arr+i,arr+j);
}
if(i != 0)
change(arr, arr+i);
//i分割数组为两个部分
quick_sort(arr, i);//前半部分
quick_sort(arr+i+1, len-i-1);//后半部分
return 0;
}
int show(int *arr,int len)
{
while(len--) printf("%d ",*arr++);
printf("\n");
}
int main()
{
int arr[] = { 0 , 68,90,77,18,25,66,23,51,99};
show(arr, sizeof(arr)/sizeof(int));
quick_sort(arr, sizeof(arr)/sizeof(int));
show(arr, sizeof(arr)/sizeof(int));
return 0;
}