常用排序總結

2021-07-05 00:23:09 字數 1589 閱讀 5581

總結一下面試當中經常問到的排序演算法:

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次...