#include <stdio.h>
#include <string.h>//memset
#include <stdlib.h>//free
#include <stddef.h>
#define uint8_t unsigned char
#define uint16_t unsigned short
#define uint32_t unsigned int
#define uint64_t unsigned long long
void myswap( int *x, int *y )
{
int t;
t = *x;
*x = *y;
*y = t;
}
int data[8]={1,2,4,3,8,6,7,5};
void myquicksort(int *a,int left,int right)
{
int i,j,temp;
if(left>right)
return;
temp=a[left]; //temp中存的就是基准数
i=left;//左边的哨兵
j=right;//右边的哨兵
while(i!=j)
{
//顺序很重要,要先从右边开始找
while(a[j]>=temp && i<j) j--;
//再找右边的
while(a[i]<=temp && i<j) i++;
//交换两个数在数组中的位置
if(i<j) myswap(&a[i],&a[j]);
}
//最终将基准数归位
a[left]=a[i];
a[i]=temp;
myquicksort(a,left,i-1);//继续处理左边的,这里是一个递归的过程
myquicksort(a,i+1,right);//继续处理右边的 ,这里是一个递归的过程
}
int main()
{
char i=0;
for(i=0;i<8;i++)printf("%d-",data[i]);printf("\r\n");
myquicksort(data,0,7);
for(i=0;i<8;i++)printf("%d-",data[i]);printf("\r\n");
return 0;
}
排序直接把数组传入