public class Quick_Sort {
public static int[] quick_sort(int []arr,int t,int l)
{
int top=t,last=l,mid=(t+l)/2; //mid-----关键字
if(last<top) return arr ;
do{
while(arr[last]>arr[mid])
last--;//小于关键字就退出循环
while(arr[top]<arr[mid])
top++;//大于关键字就退出循环
if(top<=last) //如果左边的索引小于右边的索引就交换这两个数
{
swap(arr,top,last);//交换
top++;
last--;
}
}while(top<last);
if(top<l) quick_sort(arr,top,l);//递归,排关键字右边的
if(last>t) quick_sort(arr,t,last);//递归,排关键字左边的
return arr;
}
//交换两个数-----因为不想C中可以引用 所以要用到数组做 为参数把交换后的值返回去
public static int[] swap(int []arr,int a,int b)
{
int temp;
temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
return arr;
}
public static void main(String []args)
{
int []arr={54,10,34,30,44,0,44,4};
quick_sort(arr,0,7);
for(int i=0;i<8;i++)
System.out.print(arr[i]+" ");
}
}
JAVA快速排序
最新推荐文章于 2024-04-30 23:29:02 发布