總結一下面試當中經常問到的排序演算法:
1、氣泡排序:
package com.zj.sort;
public class maopaosort
}} }
public static void main(string arqs);
maopaosort ms = new maopaosort();
ms.sort(test);
for(int i=0;i
最好的情況呢?尼瑪,好像我的寫法沒有最好的情況。。。原來陣列12345排成12345,複雜度也是o(n^2)
2、快速排序:
package com.zj.sort;
public class quicksort
public void quicksort(int array,int left,int right)
} public int partition(int array,int left,int right)
}}
int k = array[right];
array[right] = array[i+1];
array[i+1] = k;
return i+1;
}public static void main(string arqs);
quicksort qs = new quicksort();
qs.myquicksort(test);
for(int i=0;i
**中我們初始假設left_sub_array為空,所以對應的演算法的最壞情況就是,陣列都小於等於x的情況(把right_sub_array中的資料搬移到left_sub_array中);這種情況會進入if,執行i++操作,但不會執行交換操作,複雜度o(n);再考慮遞迴:o(n)=o(n-1)+c.n;o(n)=o(1)+c(2+3+4....+n)=o(n^2);
快速排序的平均演算法複雜度比較難推到,記得是o(n.logn)
3、堆排序
package com.zj.sort;
public class heapsort
} public void max_heapify(int data, int i)
}public void buildmaxheap(int data) }
public static void main(string arqs);
heapsort hs = new heapsort();
hs.sort(test);
for(int i=0;i
package com.zj.sort;
public class countsort ;
bucketsort bs = new bucketsort();
test =bs.sort(test);
for(int i=0;ibucket.value)
src_bucket = src_bucket.next;
tmp = tmp.next;
} src_bucket.next = bucket;
}}class bucket
}
常用排序總結
排序法 平均時間 最差情形 穩定度額外空間 備註 冒泡o n2 o n2 穩定 o 1 n小時較好交換 o n2 o n2 不穩定 o 1 n小時較好 選擇 o n2 o n2 不穩定o 1 n小時較好插入 o n2 o n2 穩定 o 1 大部分已排序時較好 基數 o logrb o logrb ...
常用排序演算法總結
總結些常見的排序演算法,方便以後可以重用。資料量不大,為了表達方便就直接使用了陣列。int data null data new int 1.氣泡排序 氣泡排序,從小到大排序 for int i 0 i data.length i 氣泡排序就是說,排序的過程像水裡往上冒的氣泡一樣,每個數字代表乙個氣...
常用排序演算法總結
常用排序演算法總結 選擇排序 對於長度為n的陣列,選擇排序需要大約n2 2詞比較和n次交換。插入排序 對於隨機排列的長度為n且主鍵不重複的陣列 1 平均情況下,需要 n2 4次比較以及 n2 4次交換。2 最壞情況下,需要 n2 2次比較以及 n2 2次交換 3 最好情況下,需要n 1次比較以及0次...