package com.fonxian;
import java.util.Random;
public class Quick {
public static void sort(int[] a){
sort(a,0,a.length-1);
}
private static void sort(int[] a,int lo,int hi){
if(hi <= lo) return;
int j = partition(a,lo,hi);
sort(a,lo,j-1);
sort(a,j+1,hi);
}
//切分
private static int partition(int[] a,int lo,int hi){
int i = lo,j = hi + 1;
int v = a[lo];
while(true){
while(less(a[++i],v)) if(i == hi) break;
while(less(v,a[--j])) if(j == lo) break;
if(i >= j) break;
exch(a,i,j);
}
exch(a,lo,j);
return j;
}
//交换数值
private static void exch(int[] a,int i,int j){
int t = a[i];
a[i] = a[j];
a[j] = t;
}
//判断v是否小于w
private static boolean less(int v,int w){
return (v<w)?true:false;
}
//显示排序后结果
private static void show(int[] a){
for(int i = 0;i < a.length;i++)
System.out.print(a[i]+" ");
System.out.println();
}
public static void main(String[] args) {
int[] a={3,4,8,7,5,6,1};
sort(a);
show(a);
}
}
快速排序算法
最新推荐文章于 2022-08-23 11:38:17 发布