7.1簡單排序
前提:
- void X_Sort (ElementType A[], int N)
- 為簡單起見,討論整數大小的排序。
- N是正整數。
- 只討論基於比較的排序。
- 只討論內部排序。
- 氣泡排序:
從上到下比較相鄰2個泡泡。
void Bubble_Sort (ElementType A[] , int N) {
for (P = N-1; P>= 0 ; P--) {
flag = 0;
for (I = 0 ;I< P, I++){ // 一趟冒泡
if (A[I] > A[I+1]) {
Swap (A[1], A[I+1]);
flag = 1;
}
}
if (flag == 0) break;
}
}
時間複雜度: 最大是 T= O(N平方); 最小 是T = O(N)
- 插入排序
打牌的時候,牌的插入過程。新牌從後往前和前邊的比較,然後插入。
void Insert_sort (ElementType A[], int N) {
for ( P = 1; p < N; p++) {
Tmp = A[p]; // 摸一張牌
for (I = P; I>0 && A[I-1]>Tmp;i--) {
A[I] = A[I-1]; // 移出空位置。
}
A[I] = Tmp; //將新牌落位。
}
}
時間複雜度 也是最大是 O(N 平方),最小是O(N)
逆序對:對於下標i<j,如果A[i]>A[j],則稱(i,j)是 一對逆序對(inversion)。
對於插入排序和氣泡排序,T(N, I) = O( N+I ) I是逆序對的個數。
- 任意N個不同元素組成的序列平均具有 N ( N - 1 ) / 4 個逆序對。
- 任何僅以交換相鄰兩元素來排序的算 法,其平均時間複雜度為 Ω ( N2 )。
相關文章
- 簡單快速排序排序
- 簡單選擇排序就是簡單~~~排序
- 字串-簡單字串排序字串排序
- 簡單的排序方法排序
- 簡單選擇排序排序
- 快速排序的簡單理解排序
- 簡單排序演算法排序演算法
- 堆排序就這麼簡單排序
- 快速排序就這麼簡單排序
- 氣泡排序的簡單理解排序
- 選擇排序的簡單理解排序
- 歸併排序的簡單理解排序
- 基數排序的簡單理解排序
- JavaScript希爾排序簡單介紹JavaScript排序
- 基數排序就這麼簡單排序
- 歸併排序就這麼簡單排序
- 插入排序就這麼簡單排序
- 選擇排序就這麼簡單排序
- 氣泡排序就這麼簡單排序
- 簡單選擇排序(Simple Selection Sort)排序
- 簡單的幾個排序演算法排序演算法
- 【PHP資料結構】插入類排序:簡單插入、希爾排序PHP資料結構排序
- 用go實現簡單的氣泡排序Go排序
- 【小小前端】前端排序演算法第三期(不簡單選擇排序-堆排序)前端排序演算法
- elasticsearch實現簡單的指令碼排序(script sort)Elasticsearch指令碼排序
- 【演算法】排序04——程式碼簡約而不簡單的希爾排序(含程式碼實現)演算法排序
- 從簡單的快速排序說起-Partition-ThreePartition-TopK排序TopK
- Java常見排序演算法之插入排序-簡單的效能優化技巧Java排序演算法優化
- 最簡單的氣泡排序還能怎麼優化?排序優化
- 資料結構學習筆記-簡單選擇排序資料結構筆記排序
- 8行程式碼實現快速排序,簡單易懂圖解!行程排序圖解
- 音影片領域中, 5.1 7.1聲道不同版本的區別 ---- 5.1 5.1(side) 7.1 7.1(side) 7.1(wide-side)IDE
- 最簡單易懂的三種排序演算法:冒泡、選擇、插入排序演算法
- 史上最簡單的排序演算法?看起來卻滿是bug排序演算法
- 【JS面試向】選擇排序、桶排序、氣泡排序和快速排序簡介JS面試排序
- 習題7.1
- 單身狗——排序2排序
- Mysql中的雙路排序和單路排序MySql排序