快速排序 java实现

来源:互联网 发布:维棠flv mac 编辑:程序博客网 时间:2024/06/07 15:30
<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>

0 0
原创粉丝点击