#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#define N 6
int Quicksort(int a[],int flag){
int *p0,*p1;
p0=a;
p1=a+N-1;
int temp=a[0];
while(p0!=p1){
while(p0!=p1){
if(*p1<=flag)
{
*p0=*p1;
p0++;
break;
}
else
p1--;
}
while(p0!=p1)
{
if(*p0>=flag)
{
*p1=*p0;
p1--;
break;
}
else
p0++;
}
}
*p0=temp;
return 1;
}
void main(){
int a[N];//={5,6,1,2,9,0};
printf("please input %d num:",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
Quicksort(a,0);
for(int i=0;i<N;i++)
printf("%d,",a[i]);
}
基本思想如下:
用一个临时变量保存A[0],
用两个指针,分别指向数组头和尾,
首先,如果尾小于标志数,则
头指针所指的地址被赋值为尾指针所指的数
于是头指针加加,再比较头指针和标志数。。。
最后,将头指针或是尾指针的值赋为初始的A[0];