JAVA里的排序,最后顺序颠倒了。。

来源:百度知道 编辑:UC知道 时间:2024/05/30 03:26:01
//快速排序

class Qsort
{

static void sort(int []array,int l,int r)
{
int pivotindex=findpivot(array,l,r);
int pivot=array[pivotindex];
swap(array,r,pivotindex);
int k=partition(array,pivot,l-1,r);
swap(array,r,k);
if(k-l>1) sort(array,l,k);
if(r-k>1) sort(array,k+1,r);
}

static int partition(int array[],int pivot,int l,int r)
{
while(l<r)
{
while(array[++l]>pivot);
while(r!=0&&array[--r]<pivot);
swap(array,l,r);
}
swap(array,l,r);
return l;
}

static int findpivot(int array[],int l,int r)
{
return (l+r)/2;
}

static void swap(int array[],int i,int j)
{
int temp;
temp=array[i];
array[i]=array[j];
array[j]=temp;
}

}

public class px_7
{
public static void main(String args[])
{
int []array={2,99,87,31,45

这好像是快速算法吧。
while(array[++l]<pivot);
while(r!=0&&array[--r]>pivot);
没给你试验,看了一下大概是在这。

倒过来输出不就行了?
class Qsort
{

void sort(int []array,int l,int r)
{
int pivotindex=findpivot(array,l,r);
int pivot=array[pivotindex];
swap(array,r,pivotindex);
int k=partition(array,pivot,l-1,r);
swap(array,r,k);
if(k-l>1) sort(array,l,k);
if(r-k>1) sort(array,k+1,r);
}

static int partition(int array[],int pivot,int l,int r)
{
while(l<r)
{
while(array[++l]>pivot);
while(r!=0&&array[--r]<pivot);
swap(array,l,r);
}
swap(array,l,r);
return l;
}

static int findpivot(int array[],int l,int r)
{
return (l+r)/2;
}

static void swap(int array[],int i,int j)
{
int temp;
temp=array[i];
array[i]=array[j];
array[j]=temp;
}

}

publi