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 )。
相關文章
- 簡單排序排序
- 簡單快速排序排序
- 簡單堆排序排序
- 簡單選擇排序就是簡單~~~排序
- 簡單的排序方法排序
- 字串-簡單字串排序字串排序
- 簡單選擇排序排序
- 排序演算法——簡單選擇排序排序演算法
- 簡單排序演算法排序演算法
- 快速排序的簡單理解排序
- 1545 最簡單排序排序
- 堆排序就這麼簡單排序
- 氣泡排序的簡單理解排序
- 選擇排序的簡單理解排序
- 基數排序的簡單理解排序
- 歸併排序的簡單理解排序
- JavaScript希爾排序簡單介紹JavaScript排序
- 快速排序就這麼簡單排序
- 【筆記】簡單選擇排序筆記排序
- MapReduce應用案例--簡單排序排序
- 簡單易懂的氣泡排序排序
- 氣泡排序就這麼簡單排序
- 基數排序就這麼簡單排序
- 歸併排序就這麼簡單排序
- 插入排序就這麼簡單排序
- 選擇排序就這麼簡單排序
- javascript氣泡排序簡單介紹JavaScript排序
- 【PHP資料結構】插入類排序:簡單插入、希爾排序PHP資料結構排序
- 簡單選擇排序(Simple Selection Sort)排序
- 簡單的幾個排序演算法排序演算法
- 演算法學習之簡單排序演算法排序
- 用go實現簡單的氣泡排序Go排序
- std list/vector sort 排序就這麼簡單排序
- 【小小前端】前端排序演算法第三期(不簡單選擇排序-堆排序)前端排序演算法
- 【演算法】排序04——程式碼簡約而不簡單的希爾排序(含程式碼實現)演算法排序
- elasticsearch實現簡單的指令碼排序(script sort)Elasticsearch指令碼排序
- IOS幾種簡單有效的陣列排序方法iOS陣列排序
- 從簡單的快速排序說起-Partition-ThreePartition-TopK排序TopK