一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 快速排序算法原理及java遞歸實現

快速排序算法原理及java遞歸實現

2019-11-03 17:33java教程網 JAVA教程

快速排序 對冒泡排序的一種改進,若初始記錄序列按關鍵字有序或基本有序,蛻化為冒泡排序。使用的是遞歸原理,在所有同數量級O(n longn) 的排序方法中,其平均性能最好。就平均時間而言,是目前被認為最好的一種內部排序方

快速排序 對冒泡排序的一種改進,若初始記錄序列按關鍵字有序或基本有序,蛻化為冒泡排序。使用的是遞歸原理,在所有同數量級O(n longn) 的排序方法中,其平均性能最好。就平均時間而言,是目前被認為最好的一種內部排序方法

基本思想是:通過一躺排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然后再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。

三個指針: 第一個指針稱為pivotkey指針(樞軸),第二個指針和第三個指針分別為left指針和right指針,分別指向最左邊的值和最右邊的值。left指針和right指針從兩邊同時向中間逼近,在逼近的過程中不停的與樞軸比較,將比樞軸小的元素移到低端,將比樞軸大的元素移到高端,樞軸選定后永遠不變,最終在中間,前小后大。

需要兩個函數:

① 遞歸函數  public static void quickSort(int[]n ,int left,int right)
② 分割函數(一趟快速排序函數) public static int partition(int[]n ,int left,int right)

JAVA源代碼(成功運行):

 

復制代碼代碼如下:


package testSortAlgorithm;

 

public class QuickSort {
 public static void main(String[] args) {
  int [] array = {49,38,65,97,76,13,27};
  quickSort(array, 0, array.length - 1);
  for (int i = 0; i < array.length; i++) {
   System.out.println(array[i]);
  }
 }
 /*先按照數組為數據原型寫出算法,再寫出擴展性算法。數組{49,38,65,97,76,13,27}
  * */
 public static void quickSort(int[]n ,int left,int right){
  int pivot;
  if (left < right) {
   //pivot作為樞軸,較之小的元素在左,較之大的元素在右
   pivot = partition(n, left, right);
   //對左右數組遞歸調用快速排序,直到順序完全正確
   quickSort(n, left, pivot - 1);
   quickSort(n, pivot + 1, right);
  }
 }

 public static int partition(int[]n ,int left,int right){
  int pivotkey = n[left];
  //樞軸選定后永遠不變,最終在中間,前小后大
  while (left < right) {
   while (left < right && n[right] >= pivotkey) --right;
   //將比樞軸小的元素移到低端,此時right位相當于空,等待低位比pivotkey大的數補上
   n[left] = n[right];
   while (left < right && n[left] <= pivotkey) ++left;
   //將比樞軸大的元素移到高端,此時left位相當于空,等待高位比pivotkey小的數補上
   n[right] = n[left];
  }
  //當left == right,完成一趟快速排序,此時left位相當于空,等待pivotkey補上
  n[left] = pivotkey;
  return left;
 }
}

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 青青热久免费精品视频网站 | 男人在线影院 | 日本三级斤 | 日韩v | 日本精品一区二区三区 | 亚洲国产免费观看视频 | 风间由美m3u8在线 | 4438全国免费观看 | 久久日本片精品AAAAA国产 | 风间由美在线播放 | 久久成人免费大片 | 美女在线看永久免费网址 | 天堂伊人| naruto hentai玖辛奈 | 暖暖免费高清完整版观看日本 | 成人在线视频观看 | 四虎www.| 久久黄色录像 | 第一次不是你高清在线观看 | b片在线观看 | 日本三级免费网站 | 精品久久久久香蕉网 | 俄罗斯性高清完整版 | 俄罗斯一级大片 | yellow视频在线观看 | 五月婷婷在线观看 | 免费观看视频在线播放 | 欧美性xxxxxx爱 | 亚洲国产精品久久精品成人网站 | 日韩一区二区不卡 | 欧美性bbbbbxxxxxxx | 青青在线国产视频 | 久久国产视频网站 | eeuss18影院www国产 | 久久re热在线视频精99 | 大陆黄色片 | 亚洲精品国产一区二区三区在 | 视频一区二区三区在线 | 女人张开腿让男人做爽爽 | 手机国产乱子伦精品视频 | 国产精品香蕉夜间视频免费播放 |