C語言練習之 插入排序(一)


  排序算法,是編程中經常使用的算法,我經常聽說的有冒泡排序、插入排序、希爾排序、選擇排序等等

由於筆者並非計算機專業科班出身,加上天資一般,當時學習的時候,真是頭疼不已,那時候很多上說的也

不是特別清楚,后來搞明白了之后,時間一長,又忘了(哈哈)。所以總結一下,需要用時直接到博客園上

面去復制。

  今天就說一下插入排序:插入排序的核心思想是:從頭開始,每次頭元素作為 “哨兵” 依次和后面的元素

進行比較,(假設從小到大排列)后面大的元素和“哨兵”比較,如果后面的元素比“哨兵”大則交換,每比較一

次,都會從比較位置,向首元素方向進行,因此,該排序算法效率並不高,時間復雜度為O(n2)

 

#include <stdio.h>

#define SWAP(X,Y) X=X+Y;Y=X-Y;X=X-Y

//按最壞的時間復雜度
int main(int argc, char *argv) {
    int a[10] = {10,9,8,7,6,5,4,3,2,1};
    for (int i = 1; i < 10; i++) {
        int j = i;
        while ((j > 0) && a[j] < a[j - 1])
        {
            SWAP(a[j], a[j - 1]);
            j -= 1;
        }
    }

    for (int i = 0; i < 10; i++) {
        printf("%d ",a[i]);
    }
    printf("\n");
}

程序在vs2015控制台上運行如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM