排序演算法根據是否需要訪問外存,分為內部排序和外部排序。
使用記憶體,分為插入(直接插入排序 希爾排序)、選擇(簡單選擇排序 堆排序)、交換(氣泡排序 快速排序)、歸併、基數。
5.氣泡排序
效率很低,實現簡單
待排序列:3、1、4、2public static void bubblesort(int arr)第一趟排序結果:1、3、2、4
第二趟排序結果:1、2、3、4
第三趟排序結果:1、2、3、4
最終排序結果為:1、2、3、4
}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 ...