一.如何分析乙個排序演算法?
1.執行效率
2.記憶體消耗
原地排序演算法,就是特指空間複雜度位o(1)的排序演算法。氣泡排序、插入排序和選擇排序,都是原地排序演算法。
3.穩定性
如果待排序的序列中存在值相等的元素,經過排序之後,相等元素之間原有的先後順序不變。
二.為什麼學習o(n^2)複雜度的排序演算法?
1.是基礎
2.易於實現,適用於簡單qingjing
3.特殊情況下,簡單排序效率高
4.由簡單演算法衍生出複雜演算法
6.作為子排序改進複雜的排序演算法
//選擇排序
public
static
void
selectsort
(string[
] arr)
for(
int i=
0;i1;i++)}
//1.更新此輪最小值的下標
if(min!=i)
//2.如果需要位置交換,進行交換
}}
//氣泡排序
public
static
void
bubblesort
(string[
] arr)
//一般情況
for(
int i=arr.length-
1;i>=
1;i--)}
}}
//插入排序
public
static
void
insertsort
(string[
] arr)
//一般情況
for(
int i=
1;i)//寫法2
// for(j=i-1;j>=0;j--)
// else
// }
arr[j+1]
=e;}
}
三大排序演算法
當前結果是從大到小,若想從小到大排序,將a j a j 1 改為 a j a j 1 即可 a 1,4,2,5,22,3 n len a for i in range 1 n for j in range n i if a j a j 1 a j a j 1 a j 1 a j print a 當前...
8大排序演算法
一 各個排序演算法的過程 1 直插入排序 乙個個的進行插入,直到有序序列。穩定的。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。具體實現 如下 時間複雜度 o n 2 void insertsort int a,int n 3 選擇排序 按大小順序一次選出,進行公升降排列。在要排序的一組數中,選出...
九大排序演算法
常見的排序分為兩類,一類是內部排序 直接插入排序 希爾排序 簡單選擇排序 堆排序 氣泡排序 快速排序 歸併排序 基數排序 一類是外部排序。當n較大時,應該使用時間複雜度為o nlog2n 的排序,如快速排序 堆排序 歸併排序。快排是基於比較的內部排序中,最好的方法。假設陣列為r 0 r n 1 第一...