两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

1. 復(fù)雜度與穩(wěn)定性

算法時(shí)間復(fù)雜度

最壞情況:O(n^2)

最好情況:O(n)

平均情況:O(n^2)

 

穩(wěn)定性:不穩(wěn)定排序

2.過(guò)程介紹

希爾排序,又名遞減增量排序算法,是一種非穩(wěn)定的更高效的插入排序,在對(duì)幾乎已經(jīng)排好序的數(shù)據(jù)操作時(shí),效率極高,即可以達(dá)到線性排序的效率,直接插入排序整體來(lái)說(shuō)是低效的,因?yàn)椴迦肱判蛎看沃荒軐?shù)據(jù)移動(dòng)一位;

希爾排序的基本思想是:先將整個(gè)待排序的記錄序列分割成為若干子序列分別進(jìn)行直接插入排序,待整個(gè)序列中的記錄“基本有序”時(shí),再對(duì)全體記錄進(jìn)行依次直接插入排序。

過(guò)程如下:

1. 選擇一個(gè)增量序列 t1,t2,……,tk,其中 ti > tj, tk = 1;

2. 按增量序列個(gè)數(shù) k,對(duì)序列進(jìn)行 k 趟排序;

3. 每趟排序,根據(jù)對(duì)應(yīng)的增量 ti,將待排序列分割成若干長(zhǎng)度為 m 的子序列,分別對(duì)各子表進(jìn)行直接插入排序。僅增量因子為 1 時(shí),整個(gè)序列作為一個(gè)表來(lái)處理,表長(zhǎng)度即為整個(gè)序列的長(zhǎng)度。

 

3. 圖示過(guò)程

第一趟

10

50

30

20

70

70

40

60

第二趟

10

20

30

50

40

60

70

70

第三趟

10

20

30

40

50

60

70

70

第四趟

10

20

30

40

50

60

70

70

可以見(jiàn)的,相比直接插入排序由于可以每趟進(jìn)行分段操作,故整體效率體現(xiàn)較高。

 

4. 相關(guān)的代碼

#include<iostream>
using namespace std;
void shellSort(int arr[], int n) {
    int i, j, gap;
    for (gap = n / 2; gap > 0; gap /= 2) {
        for (i = 0; i < gap; i++) {
            for (j = i + gap; j < n; j += gap) {
                for (int k = j; k > i && arr[k] < arr[k-gap]; k -= gap) {
                    swap(arr[k-gap], arr[k]);
                }
            }
        }
    }
}
 
int main() {
    int a[8]= {70,50,30,20,10,70,40,60};
    int n=8;
    shellSort(a,n);
    for(int i=0; i<n; i++) {
        cout<<a[i]<<' ';
    }
    return 0;
}


作業(yè):
1738 排序
點(diǎn)贊(1)

C語(yǔ)言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:

一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語(yǔ)言學(xué)練課程

解決困擾你多年的C語(yǔ)言疑難雜癥特性的C語(yǔ)言進(jìn)階課程

從零到寫出一個(gè)爬蟲的Python編程課程

只會(huì)語(yǔ)法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程

信息學(xué)奧賽或C++選手的 必學(xué)C++課程

藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門課程

手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程

Dotcpp在線編譯      (登錄可減少運(yùn)行等待時(shí)間)