快速排序的java實現(key的位置可任取)

來源:互聯網
上載者:User

標籤:

 1 /** 2  * @author 黃志偉 3  */ 4 public class QuickSort { 5     public static void main(String[] args) { 6         int [] array = {49,38,65,97,76,13,13,27,4,8,2,3,56}; 7         quickSort(array, 0, array.length - 1); 8         for (int i = 0; i < array.length; i++) { 9             System.out.println(array[i]);10         }11     }12 13     /**14      * @param nums 要遞迴處理的數組15      * @param left 左邊界 begin 016      * @param right 右邊界 end length-117      */18     private static void quickSort(int[] nums,int left,int right){19         int x = (left+right)/2;20         int key = nums[x];21         int i = left;22         int j = right;23         int index = x;24         //如果長度為一或越界則不需要處理25         if(left >= right) return;26         while(i < j){27             //左邊跳過>=key的一切值28             while(i < j && nums[j] >= key){29                 j--;30             }31             //右邊跳過<key的一切值32             while(i < j && nums[i] < key){33                 i++;34             }35             //使用index來儲存key值所在的數組下標36             //x的對應值只會不對換或對換一次37             if(i == x && i != j){38                 index = j;39             }40             if(j == x && i != j){41                 index = i;42             }43             //交換i、j的對應值44             int tmp = nums[i];45             nums[i] = nums[j];46             nums[j] = tmp;47         }48         //判斷i == j(邊界)處的值大於還是小於0,劃分到不同的地方49         if(nums[i] < key){50            ++i;51         }52         int temp = nums[i];53         nums[i] = nums[index];54         nums[index] = temp;55         quickSort(nums,left,i-1);56         quickSort(nums,i+1,right);57     }58 }

 

快速排序的java實現(key的位置可任取)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.