C語言例項解析精粹學習筆記 43(希爾排序)

2022-08-28 23:15:23 字數 1036 閱讀 1534

例項說明:

用希爾排序方法對陣列進行排序。由於書中更關注的例項,對於原理來說有一定的解釋,但是對於第一次接觸的人來說可能略微有些簡略。自己在草稿紙上畫了好久,後來發現網上有好多很漂亮的原理圖。

下面將原書中的程式附上(主函式裡的程式略有差異)

1 #include 2 #include 3

4#define max 256

5int

r[max];67

void shellpass(int d, intn)8

while(j>0 && r[0]20 r[j+d] = r[0]; //

插入r[i]到正確的位置上21}

22}23}

2425

void shellsort(int

n)26

while(increment > 1

);32}33

34int

main()

3547

else

if(n <= 0)48

5253 printf("

please input the element one by one:\n");

54for(int i=1; i <= n; i++)

5558

59 printf("

the sequence you input is :");

60for(int i=1; i<=n; i++)

61 printf("

%4d"

, r[i]);

6263

shellsort(n);

64 printf("

\nthe sequence after shell sort is:");

65for(int i=1; i<=n; i++)

66 printf("

%4d"

, r[i]);

6768

return0;

69 }

C語言例項解析精粹學習筆記 32

例項32 編制乙個包含姓名 位址 郵編和 的通訊錄輸入和輸出函式。思路解析 1 用結構體來完成姓名 位址 郵編和 的組合。2 結構體指標的使用。3 malloc的使用 4 scanf函式的返回值是正確輸入的變數個數 程式 如下 1 include 2 include 3 include 45 def...

C語言例項解析精粹學習筆記 26

例項26 阿拉伯數字轉換為羅馬數字,將乙個整數n 1 9999 轉換為羅馬數字,其中數字和羅馬數字的對應關係如下 原書中的開發環境很老,我也沒有花心思去研究。自己在codeblocks中進行開發的,所以程式與原書中的程式有很多地方不同,但是關鍵的一些程式還是採用原書中的 1 include 2 in...

C語言例項解析精粹學習筆記 42(插入排序)

例項說明 將乙個整數陣列按從小到大的順序進行排序。主要學習基本的插入排序和改進的氣泡排序的演算法和應用 思路1 從第乙個資料開始,分別比較其後的資料,若比它小,則將這兩個數的位置交換 從第乙個資料開始,直到最後。1 include 2 include 3 define max 10045 67int...