这是我用递归实现的快速排序,代码有错,问题出在partition内部,可是身为菜鸟,找不出,各位看官如有兴趣,可否指点一二?
class SortNum
{
static int partition(int a[],int key,int low,int high)
{
while(low<high)
{
int j=high;
while(j>low)
{
if(a[j]<key)
{
a[low]=a[j];
high=j;
break;
}
j--;
}
int i=low+1;
while(i<high)
{
if(a[i]>=key)
{
a[high]=a[i];
low=i;
break;
}
i++;
}
high--;
}
return low;
}
static void QuickSort(int a[],int first,int last)
{
if(first<last)
{
int key=a[first];
int pot=partition(a,key,first,last);
a[pot]=key;
QuickSort(a,first,pot-1);
QuickSort(a,pot+1,last);
}
}
public static void main(String[] args)
{
final int SIZE=7;
int a[]={45,56,5,67,9,32,12};
int first=0;
int last=SIZE-1;//last=7
从小到大排列
QuickSort(a,first,last);
System.out.println("this is the sorted array:");
for(int num=0;num<SIZE;num++)
{
System.out.println(" "+a[num]);
}
}
}