<span style="font-size:18px;">package com.sunny.sort;
/**
* quick sort
* @author panzha
* 快速排序思想,选取一个数作为基准,一般选第一个,然后把数组分为2块,这个基准数字右边的都比这个数大,左边的都比这数小
*/
public class Demo001 {
public static void main(String[] args) {
//Integer s[] = new Integer[]{72,6,57,88,60,42,83,73,48,85};
Double s[] = new Double[]{72.5,6.8,57.8,88.2,60.3,42.0,8.23,7.13,48.2,85.9};
sort(s,0,s.length-1);
print_data(s);
}
public static <T extends Comparable<T>>void sort(T s[],int h,int r){
if(h<r){
int i = quick_sort(s,h,r);
sort(s,0,i-1);
sort(s,i+1,r);
}
}
//实现一次的快速排序
public static <T extends Comparable<T>> int quick_sort(T s[],int h,int r){
int i = h,j=r;
T X = s[h];
while(i<j){
/*
* 从右边开始,查找第一个比X小的数,然后填坑
*/
while(i<j && s[j].compareTo(X)>=0){//加上i<j这个判断,不然产生了数组越界错误
j--;
}
s[i] = s[j];//用s[j]把s[i]这个坑填了
/*
* 从左边开始,查找第一个比X大的数
*/
while(i<j&&s[i].compareTo(X)<=0){
i++;
}
s[j] = s[i];//用是s[i],把s[j]这个坑填了
}
s[i] = X;
return i;
}
public static <T>void print_data(T s[]){
for (T i : s) {
System.out.print(i+" ");
}
}
}
</span>
快速排序 java实现
最新推荐文章于 2024-04-30 23:29:02 发布