亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java經典快排思想以及快排的改進講解

2024-07-14 08:43:26
字體:
來源:轉載
供稿:網友

一.經典快排思想

前提條件:給定一個無序數組arr

  1. 取這個數組最后一個數 num 作為標準,將前面部分的數分為兩部分,使得<=num的部分在左邊,>num的數在右邊;
  2. 然后將最后一個數和>num部分的第一個數進行交換,就使得原本在數組最后位置的num找到了正確的位置,它的左邊都是比它小的以及和它一樣的數,右邊都是比它大的數
  3. 回到1,進行遞歸或迭代,使得所有的數都找到正確的位

二.通過荷蘭國旗問題改進快排

什么是荷蘭國旗問題?

已知一個整形數組arr,和一個整數num,請把小于num的數放在數組的左邊,等于num的數放在數組的中間,大于num的數放在數組的右邊。

解決思路:

遍歷數組

  • 1. 若比num小,當前位置和小于的最后一個位置+1的值交換,并當前位置++;
  • 2. 若比num大,當前位置和大于的第一個位置-1的值交換;
  • 3. 若等于num的值,當前位置++;

附上代碼:

public static void NetherlandsFlag(int[] arr, int L, int R, int num) { int i = L; int p1 = L-1; int p2 = R+1; //終止條件:當前數的位置在大于區的前一個 while(i < p2) {  if(arr[i] < num) {   //當前數比num小,放左邊,i位置上的數和L上的數進行交換,并且i++,L++   swap(arr, i++, ++p1);  } else if(arr[i] == num) {   //當前數和num相等,i++   i++;  } else {   //當前數比num大,放右邊,i位置上的數和R上的數進行交換,并且i++,R--   swap(arr, i, --p2);  } }}

我們可以發現,荷蘭國旗問題和經典快排不同的就只是將<=num改為了< num和=num兩部分,借用這個思想使得原來每次只可以讓一個數找到正確的位置改進為了每次至少讓一個數找到位置。

三.在這基礎上將其改為隨機快排

隨機快排改進的地方只是在選取數的時候,將每次都選取最后位置的數改為選取隨機的一個數作為num,這樣做的好處是什么呢?

1.選取最后一個數:如果是一個已經排好序的數組,每次找到位置之后,左邊是要進行排序的部分,數組長度是原長度-1,它的時間復雜度就是O(N^2);如果每次找到的數都是中間的位置,它的時間復雜度就只有O(logN)

2.然而以隨機數作為選取的標準num的時候,因為是隨機的,就只能通過數學期望去計算它的時間復雜度,時間復雜度是O(logN)

下面附上最終的快排代碼及注釋

/* * swap(int[] arr, int i, int j);是將arr數組的i和j位置上的數交換的方法 */public static void quickSort(int[] arr) { // 如果為空或長度為1不需要排序,直接返回 if(arr == null || arr.length < 2)  return; else  quickSort(arr, 0, arr.length - 1);}// 遞歸排序public static void quickSort(int[] arr, int L, int R) { if(L < R) {  /*   * 隨機快排的隨機就在這   * 是隨機選取了一個數,和 R 進行了交換,然后使用這個數作為num,   * 所以每次選取的num是隨機的,   * 在計算時間復雜度時,是沒有最優最差情況的   * 而是通過一個長期的數學期望計算的,結果是O(N*logN)   */  swap(arr, L + (int) (Math.random() * (R - L + 1)), R);  int[] border = partition(arr, L, R);  // 小于區和大于區進行遞歸  quickSort(arr, L, border[0] - 1);  quickSort(arr, border[1] + 1, R); }}// 將給定數組劃分為小于區、等于區和大于區public static int[] partition(int[] arr, int L, int R) { int num = arr[R]; int less = L - 1; int more = R + 1; int curr = L; // 分為小于區等于區和大于區 while(curr < more) {  if(arr[curr] < num) {   swap(arr, curr++, ++less);  } else if(arr[curr] > num) {   swap(arr, curr, --more);  } else {   curr++;  } } //返回等于區的左右邊界的下標,通過下標確定小于區和大于區遞歸時的參數 return new int[] {less + 1, more - 1};}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美午夜片欧美片在线观看| 国产福利精品av综合导导航| 欧美裸体视频网站| 奇米一区二区三区四区久久| 国产999精品久久久| 久久久久国产精品免费网站| 国语自产精品视频在线看| 国产综合久久久久| 国产精品999999| 欧美一二三视频| 最近的2019中文字幕免费一页| 国产精品白丝jk喷水视频一区| 国产成人综合一区二区三区| 欧美激情第一页xxx| 亚洲情综合五月天| 国产视频精品一区二区三区| 欧美成人精品三级在线观看| 亚洲春色另类小说| 日韩视频在线免费| 日韩中文在线不卡| 最近中文字幕mv在线一区二区三区四区| 91精品视频观看| 国产精品视频xxxx| 91久久精品国产91久久性色| 国产偷国产偷亚洲清高网站| 亚洲国内精品视频| 色噜噜狠狠狠综合曰曰曰88av| 日韩在线观看网站| 萌白酱国产一区二区| 国产欧洲精品视频| 欧美裸体视频网站| 亚洲视频在线免费观看| 亚洲美女自拍视频| 久久精品国产欧美激情| www.欧美视频| 91亚洲国产成人久久精品网站| 精品国产欧美成人夜夜嗨| 国产成人精品综合久久久| 成人精品福利视频| 91精品久久久久久久久久久久久久| 久久精品亚洲热| 久久精品亚洲94久久精品| 国产精品久久久久91| 久久91亚洲人成电影网站| 日韩美女视频中文字幕| 日本三级久久久| 欧美日韩美女在线| 国产亚洲视频在线观看| 国产大片精品免费永久看nba| 两个人的视频www国产精品| 国产精品7m视频| 欧美激情视频网| 性色av一区二区三区在线观看| 亚洲国产精久久久久久| 日韩精品中文字幕在线播放| 欧美日韩国产中文精品字幕自在自线| 久久久精品免费| 亚洲伊人第一页| 性色av一区二区三区在线观看| 姬川优奈aav一区二区| 亚洲欧美精品一区二区| 在线亚洲男人天堂| 国产一区二区三区在线观看网站| 欧美裸体视频网站| 国产精品吊钟奶在线| 青草热久免费精品视频| 国产精自产拍久久久久久| xvideos成人免费中文版| 欧美色视频日本版| 国产精品96久久久久久又黄又硬| 亚洲精品久久视频| 国产成人一区二区在线| 欧美另类极品videosbestfree| 国产成人久久久精品一区| 亚洲精选一区二区| 一级做a爰片久久毛片美女图片| 欧美黑人一级爽快片淫片高清| 国产日韩欧美在线播放| 久久琪琪电影院| 亚洲国产天堂网精品网站| 在线丨暗呦小u女国产精品| 成人观看高清在线观看免费| 69精品小视频| 亚洲成av人影院在线观看| 亚洲女成人图区| 日本高清不卡的在线| 狠狠色狠色综合曰曰| 日韩欧美成人精品| 97国产在线观看| 影音先锋欧美精品| 欧美福利小视频| 毛片精品免费在线观看| 国产91精品久久久久久久| 精品久久久久久电影| 日韩亚洲第一页| 北条麻妃久久精品| 欧洲亚洲女同hd| 亚洲自拍中文字幕| 久久久久久12| 精品视频在线播放| 欧美老女人在线视频| 色无极影院亚洲| 中文字幕久久久| 中文字幕9999| 98视频在线噜噜噜国产| 久久精品国产电影| 国产精品毛片a∨一区二区三区|国| 欧美怡红院视频一区二区三区| 国产精品久久久久久久久久| 亚洲一区二区少妇| 亚洲xxxx视频| 欧美激情精品久久久| 992tv在线成人免费观看| 国模精品视频一区二区三区| 欧美视频在线观看免费网址| 激情成人中文字幕| 久久精品久久久久久国产 免费| 国产自摸综合网| 日韩av大片在线| 亚洲а∨天堂久久精品喷水| 欧日韩在线观看| 亚洲人成77777在线观看网| 成人免费网站在线观看| 57pao国产成人免费| 亚洲人成电影在线观看天堂色| 日韩美女视频免费看| 中文字幕日韩欧美在线视频| 在线亚洲午夜片av大片| 国产男女猛烈无遮挡91| 亚洲丁香婷深爱综合| 久久男人的天堂| 国语自产精品视频在线看| 中文字幕精品久久久久| 欧美日韩一区二区免费在线观看| 亚洲一区二区三区毛片| 91中文字幕在线| 92版电视剧仙鹤神针在线观看| 成人欧美一区二区三区黑人| 日韩综合视频在线观看| 亚洲视频电影图片偷拍一区| 亚洲精品自拍视频| 国产专区欧美专区| 日本精品久久久久久久| 欧美国产精品日韩| 中文字幕亚洲欧美日韩高清| 久久久国产一区二区三区| 国产精品成人在线| 亚洲午夜激情免费视频| 欧美日韩另类视频| 国产亚洲激情视频在线| 亚洲精品视频二区| 色与欲影视天天看综合网| 久久久久久av| 日韩亚洲国产中文字幕| 精品动漫一区二区| 国产欧美日韩亚洲精品| 欧美日本黄视频| 日韩黄色av网站| 亚洲综合在线播放| 日韩av色在线| 欧美性生交大片免费| 8090理伦午夜在线电影| 日韩av一区二区在线| 久久成人精品视频|