日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

八大排序算法交换排序算法

發布時間:2023/12/4 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 八大排序算法交换排序算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:冒泡排序

1:冒泡排序思想

從第一個元素開始,依次比較數組中的元素,如果比其小就交換(如果是升序的話),經過n-1輪排序后我們就可以得到有序序列了

2:上碼

  • 版本一
public static void bubblingSort(int[] arr) {for (int i = 0; i < arr.length - 1; i++) {for (int j = arr.length - 2; j >= i; j--) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}} }
  • 版本二(兩兩交換,并對其進行優化)
public static void bubblingSort(int[] arr) {for (int i = 0; i < arr.length - 1; i++) {boolean flag = false;for (int j = arr.length - 2; j >= i; j--) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;flag = true;}}if (flag == false) break;//如果沒有發生交換,證明是有序的else flag = false;} }

二:快速排序

1:快速排序的思想

我們選取出一個哨兵,然后將整個序列分成兩部分,其中一部分中所記錄的關鍵值都比該哨兵的值小,另外一部分所記錄的關鍵值都比該哨兵值大。然后再對這兩部分分別再選取哨兵,再進行劃分,直到最終序列有序為止。

2:上碼

public static void quickSort(int arr[], int left, int right) {int index;//哨兵if (left < right) {index = partIndex(arr, left, right);quickSort(arr, left, index - 1);quickSort(arr, index + 1, right);} }//注意我們是從右邊開始比較,因為我們選取的哨兵是左邊的,如果我們從左邊開始比較的話那么就會丟失數據 public static int partIndex(int arr[], int left, int right) {int l = left;int r = right;int point = arr[l];while (l < r) {//一旦 r >= l 的話 那么我們就需要終止循環while (l < r && arr[r] >= point) {//直到遇見一個比arr[point]值小的然后進行交換r--;}swap(arr, l, r);while (l < r && arr[l] <= point) {//直到遇見一個比arr[point]值大的然后進行交換l++;}swap(arr, l, r);}return l;//返回我們的我們的哨兵位置,經過上面的運算,我們已經將數據分成了兩部分,一部分比哨兵大,一部分比哨兵小//這里返回 l 和 r 都是可以的 因為我們最終跳出循環的時候, }public static void swap(int arr[], int a, int b) {int temp = arr[a];arr[a] = arr[b];arr[b] = temp; } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的八大排序算法交换排序算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。