八大排序算法交换排序算法
生活随笔
收集整理的這篇文章主要介紹了
八大排序算法交换排序算法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一:冒泡排序
1:冒泡排序思想
從第一個元素開始,依次比較數組中的元素,如果比其小就交換(如果是升序的話),經過n-1輪排序后我們就可以得到有序序列了
2:上碼
- 版本一
- 版本二(兩兩交換,并對其進行優化)
二:快速排序
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; } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的八大排序算法交换排序算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win10屏幕刷新率怎么调
- 下一篇: win10系统电脑的语言怎么设置为英语