读书人

新人求教 快排,该如何处理

发布时间: 2012-11-07 09:56:10 作者: rapoo

新人求教 快排
#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);  }} 

读书人网 >C++

热点推荐