1. 程式人生 > >java快速排序

java快速排序

clas end 一個 bsp string 處理 bre 大於 tostring

代碼如下:

public class QuickSort {
    //交換data數組中i和j兩處索引的元素
    private static void swap(DataWrap[] data, int i, int j) {
            DataWrap tmp = data[i];
            data[i] = data[j];
            data[j] = tmp;
            
    }
    //對data數組中從start-end索引範圍的子序列進行處理,使之滿足所有小於分界值得放在左邊
    //所有大於分界值得放在右邊
    private
static void subSort(DataWrap [] data,int start,int end) { //需要排序 if(start < end) { //以第一個元素作為分界值 DataWrap base = data[start]; //i從左邊開始搜索,搜索大於分界值的元素的索引 int i = start; //i從左邊開始搜索,搜索小於分界值的元素的索引 int j = end +1;
while(true) { //找到大於分界值的元素的索引,或者i已經找到了end處 while(i < end && data[++i].compareTo(base) <=0); //找到小於分界值的元素的索引,或者j已經找到了start處 while(j > start && data[--j].compareTo(base) >=0); if(i < j) { swap( data, i, j); }
else { break; } } swap(data, start, j); //遞歸左子序列 subSort(data, start, j-1); //遞歸右子序列 subSort(data, j+1, end); } } public static void quickSort(DataWrap [] data) { subSort(data, 0, data.length-1); } public static void main(String[] args) { DataWrap[] data = { new DataWrap(21, ""), new DataWrap(30, ""), new DataWrap(49, ""), new DataWrap(30, ""), new DataWrap(16, ""), new DataWrap(9, "") }; System.out.println("排序之前:\n" + java.util.Arrays.toString(data)); quickSort(data); System.out.println("排序之後:\n" + java.util.Arrays.toString(data)); } }

java快速排序