排序演算法之交換(冒泡與快排)

2021-09-25 12:47:12 字數 1029 閱讀 4708

排序演算法根據是否需要訪問外存,分為內部排序和外部排序。

使用記憶體,分為插入(直接插入排序  希爾排序)、選擇(簡單選擇排序  堆排序)、交換(氣泡排序  快速排序)、歸併、基數。

5.氣泡排序

效率很低,實現簡單

待排序列:3、1、4、2

第一趟排序結果:1、3、2、4

第二趟排序結果:1、2、3、4

第三趟排序結果:1、2、3、4

最終排序結果為:1、2、3、4

public static void bubblesort(int arr)

}system.out.println("第"+(arr.length-i)+"趟排序結果:");

display(arr);

if(flag)}}

public static void swap(int arr, int a,int b)

} public static void display(int arr)

quicksort(arr,0,arr.length-1);

} public static void quicksort(int arr, int low, int high) else

} public static int partition(int arr,int low,int high,int flag)

swap(arr,low,high);

while(low時間複雜度為o(n*logn),當資料有小到大或由大到小排列時,快速排序的效率最低,時間複雜度為o(n^2)

選擇第乙個元素作為基準相對簡單,但當其為最大或最小值時,快速排序的效率會降低。這時,採用「三項取中法」來避免最值情況出現。

非遞迴實現

排序演算法之 交換類排序(二)快排

簡介 快排是對氣泡排序的一種改進,改進了氣泡排序一次排序只能消除乙個逆序的缺點,實現了一次交換能消除多個逆序。在這裡我簡單說一下快排的實現原理。步驟 有陣列r,r 0 不存值,從r 1 開始存值到r n 1 找樞紐,我們一般把r 1 視作樞軸,把r 1 的值存在r 0 同時我們把r 1 視作空單元。...

排序演算法(快排,冒泡)

排序目的 快速查詢 排序演算法優劣的判斷條件 1.時間複雜度 2.空間複雜度 3.穩定性 關鍵字值相等的數字們,排完序之後順序不變 十大排序演算法 需要掌握的的 氣泡排序 快速排序 希爾排序 折半插入排序 堆排序 氣泡排序 依次比較第i個數與第i 1個數的大小,如果符合條件則不變,如果不符合條件,兩...

交換排序之冒泡與快排C C

一 氣泡排序 相信氣泡排序大家都知道,無非是每一趟排序時將相鄰兩個元素進行交換,根據從大到小或從小到大的順序,交換起來略有不同,如此進行n 1次排序即可得到整個陣列有序。1 平均時間複雜度為o n 2 2 最好情況下時間複雜度為o n 此時設定標誌位,元素有序時直接退出 3 最壞之間複雜度為o n ...