新人求教 快排
#include<stdio.h>
#include<stdlib.h>
int main()
{
int Partation(int *a,int low,int high);
void QSort(int *a,int low,int high);
int a[5]={1,5,9,3,7};
int low=0,high=4;
for(int i=0;i<5;i++)
{
printf("%d ",a[i]);
}
return 0;
}
int Partation(int *a,int low,int high)
{
a[0]=a[low];
int pivotkey=a[low];
while(low<high)
{
while(low<high&&a[high]>=pivotkey) high--;
a[low]=a[high];
while(low<high&&a[low]<=pivotkey) low++;
a[high]=a[low];
}
a[low]=a[0];
return low;
}
void QSort(int *a,int low,int high)
{
if(low<high)
{
int pivotloc=Partation(a,low,high);
QSort(a,low,pivotloc-1);
QSort(a,pivotloc+1,high);
}
}
好心人看一下我哪里出错了 感谢
[解决办法]
- C/C++ code
#include<stdio.h>#include<stdlib.h>int main(){ int Partation(int *a,int low,int high); void QSort(int *a,int low,int high); int a[5]={1,5,9,3,7}; int low=0,high=4; QSort(a,low,high); for(int i=0;i<5;i++) { printf("%d ",a[i]); } return 0;}int Partation(int *a,int low,int high){ int pivotkey=a[low]; while(low<high) { while(low<high&&a[high]>=pivotkey) high--; a[low]=a[high]; while(low<high&&a[low]<=pivotkey) low++; a[high]=a[low]; } a[low]=pivotkey; return low;}void QSort(int *a,int low,int high){ if(low<high) { int pivotloc=Partation(a,low,high); QSort(a,low,pivotloc-1); QSort(a,pivotloc+1,high); }}