91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言中快速排序法如何使用

發布時間:2020-08-10 09:45:56 來源:億速云 閱讀:221 作者:Leah 欄目:編程語言

這篇文章運用簡單易懂的例子給大家介紹C語言中快速排序法如何使用,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

快速排序法的排法:首先每次排序的時候設置一個基準點,將小于等于基準點的數全部放到基準點的左邊;然后將大于等于基準點的數全部放到基準點的右邊;最后在每次交換的時候就不會像冒泡排序一樣每次只能在相鄰的數之間進行交換,交換的距離就大的多了。

快速排序法的排法:

算法思想:

(1)  我們從待排序的記錄序列中選取一個記錄(通常第一個)作為基準元素(稱為key)key=arr[left],然后設置兩個變量,left指向數列的最左部,right指向數據的最右部。

C語言中快速排序法如何使用

(2)  key首先與arr[right]進行比較,如果arr[right]<key,則arr[left]=arr[right]將這個比key小的數放到左邊去,如果arr[right]>key則我們只需要將right--,right--之后,再拿arr[right]與key進行比較,直到arr[right]<key交換元素為止。

C語言中快速排序法如何使用

(3)  如果右邊存在arr[right]<key的情況,將arr[left]=arr[right],接下來,將轉向left端,拿arr[left ]與key進行比較,如果arr[left]>key,則將arr[right]=arr[left],如果arr[left]<key,則只需要將left++,然后再進行arr[left]與key的比較。

C語言中快速排序法如何使用

(4)  然后再移動right重復上述步驟

C語言中快速排序法如何使用

(5)  最后得到 {23 58 13 10 57 62} 65 {106 78 95 85},再對左子數列與右子數列進行同樣的操作。最終得到一個有序的數列。

C語言中快速排序法如何使用

算法實現:

public class QuickSort {
 
   public static void quickSort(int [] arr,int left,int right) {
      int pivot=0;
      if(left<right) {
         pivot=partition(arr,left,right);
         quickSort(arr,left,pivot-1);
         quickSort(arr,pivot+1,right);
      }
   }
 
   private static int partition(int[] arr,int left,int right) {
      int key=arr[left];
      while(left<right) {
         while(left<right && arr[right]>=key) {
            right--;
         }
         arr[left]=arr[right];
         while(left<right && arr[left]<=key) {
            left++;
         }
         arr[right]=arr[left];
      }
      arr[left]=key;
      return left;
   }
  
   public static void main(String[] args) {
      int arr[]= {65,58,95,10,57,62,13,106,78,23,85};
      System.out.println("排序前:"+Arrays.toString(arr));
      quickSort(arr,0,arr.length-1);
      System.out.println("排序后:"+Arrays.toString(arr));
   }
}
排序前:[65, 58, 95, 10, 57, 62, 13, 106, 78, 23, 85]
排序后:[10, 13, 23, 57, 58, 62, 65, 78, 85, 95, 106]


關于C語言中快速排序法如何使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

华坪县| 双桥区| 朝阳区| 西华县| 天津市| 噶尔县| 安乡县| 江西省| 福清市| 象山县| 永济市| 石城县| 秀山| 翼城县| 平阳县| 潼关县| 德昌县| 福安市| 黄陵县| 通辽市| 南丹县| 彭阳县| 双鸭山市| 桑日县| 扬中市| 鲁甸县| 思南县| 布尔津县| 南汇区| 芜湖县| 余姚市| 宾川县| 措美县| 都兰县| 波密县| 郓城县| 溆浦县| 蓬莱市| 萍乡市| 库伦旗| 义乌市|