一、選擇排序
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 通過交換相鄰元素進行排序...