幾種排序演算法整理

2021-09-23 17:49:51 字數 1645 閱讀 2743

一、選擇排序

public class selectsort;

for(int i:test)

system.out.println();

selectsort(test);

for(int j:test)

}static void selectsort(int unordered)

; for(int i:test)

system.out.println();

is.insertsort(test);

for(int j:test)

}/***插入排序基本思想:

*將一組數列看做是乙個有序數列和乙個無序數列的組合,每次在有序數列中插入乙個數,使之仍然為有序數列。

*時間複雜度為o(n2),空間複雜度o(1),因為只使用了乙個輔助變數,且是在原記錄資料上進行操作的。

*@param unordered 乙個無序列表(為簡單起見,假設為整型陣列)。

*/ void insertsort(int unsorted)

;for(int i:test)

system.out.println();

bs.bubblesort(test);

for(int j:test)

}/**

*氣泡排序的基本思想:

*通過將陣列中的相鄰數字進行兩兩比較,將較大的沉底,較小的浮出水面。

*時間複雜度為o(n2),空間複雜度o(1),因為只使用了乙個輔助變數,且是在原記錄資料上進行操作的。

*@param unsorted 乙個無序陣列,假定為整型陣列。

*/void bubblesort(int unsorted)

;quicksort qs = new quicksort();

qs.quicksort(arr);

for(int i:arr)

}/**

*快速排序的基本思想:

*通過一趟排序將待排記錄分割成兩個區域,

*其中乙個區域中的關鍵字均比另乙個區域中的小(區域內不一定是有序的);

*然後分別對這兩個區域進行分割,即遞迴執行。

*時間複雜度為o(nlogn),最壞的情況下是o(n2).不穩定。

*@param unsorted 乙個無序陣列,假定為整型陣列。

*/int partition(int unsorted,int low,int high)

return nums;

}public static void merge(int nums, int low, int mid, int high) else

}// 把左邊剩餘的數移入陣列

while (i <= mid)

// 把右邊邊剩餘的數移入陣列

while (j <= high)

// 把新陣列中的數覆蓋nums陣列

for (int k2 = 0; k2 < temp.length; k2++)

}// 歸併排序的實現

public static void main(string args) ;

mergesort1.sort(nums, 0, nums.length-1);

for(int i : nums)

}}

排序 排序演算法整理

經常零零散散的用到排序演算法,將幾類常見的總結下來 時間複雜度o n 2 空間複雜度o 1 穩定排序 param arr public static void insersort int arr else arr j 1 tmp 氣泡排序 時間複雜度 o n 2 空間複雜度o 1 穩定排序 para...

幾種排序演算法

幾種比較常見的排序演算法 第一種 函式功能 雙向氣泡排序 2013.7.8 時間複雜度o n 2 include void mp int array,int n if mmax 0 沒有記錄交換,掃瞄結束 break bmax mmax for i bmax 1 i bmin i 此次掃瞄使輕氣泡上...

幾種排序演算法

本帖依據學習進度持續更新 資料結構與演算法分析 c語言描述 學到第七章,是時候該系統的學習一下排序演算法了。首先學到的是插入排序,演算法就不贅述了,書上部落格上到處都有。書上的兩個定理還不太明白 插入排序 定理7.1 n個互異數的陣列的平均逆序數是n n 1 4。定理7.2 通過交換相鄰元素進行排序...