java快速排序

來源:互聯網
上載者:User

標籤:while   quicksort   rgs   子序列   com   bsp   ring   blog   一個   

代碼如下:

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快速排序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.