利用直接插入排序進行將數(shù)組序列從小到大排序

1 題目

功能:直接插入排序
描述:利用直接插入排序進行將數(shù)組序列從小到大排序

2 思路

原始順序: 34, 12, 45, 3, 8, 23, 89, 52, 24, 10

在代碼中將數(shù)組 a[0] 置為監(jiān)視哨

趟數(shù) 監(jiān)視哨 排序結果
1 34 (12,) 34, 45, 3, 8, 23, 89, 52, 24, 10
2 12 (12, 34,) 45, 3, 8, 23, 89, 52, 24, 10
3 45 (12, 34, 45,) 3, 8, 23, 89, 52, 24, 10
4 3 (3, 12, 34, 45,) 8, 23, 89, 52, 24, 10
5 8 (3, 8, 12, 34, 45,) 23, 89, 52, 24, 10
6 23 (3, 8, 12, 23, 34, 45,) 89, 52, 24, 10
7 89 (3, 8, 12, 23, 34, 45, 89,) 52, 24, 10
8 52 (3, 8, 12, 23, 34, 45, 52, 89,) 24, 10
9 24 (3, 8, 12, 23, 24, 34, 45, 52, 89,) 10
10 10 (3, 8, 10, 12, 23, 24, 34, 45, 52, 89,)

以上是整個的插入排序算法的過程

3 代碼

#include <stdio.h> 
#include <stdlib.h>

/**
功能:直接插入排序
描述:利用直接插入排序進行將數(shù)組序列從小到大排序
**/

void insort(int s[], int n) {                   // 自定義函數(shù)isort

    int i, j;
    for (i = 2; i <= n; i++) {                  // 數(shù)組下標從2開始,0 位置做監(jiān)視哨,1位置一個數(shù)據(jù)無可比性
        s[0] = s[i];                            // 給監(jiān)視哨賦值
        j = i - 1;                              // 確定要進行比較的元素的最右邊位置
        while (s[0] < s[j]) {
            s[j + 1] = s[j];                    // 數(shù)據(jù)右移
            j--;                                // 移向左邊一個未比較的數(shù)
        }
        s[j + 1] = s[0];                        // 在確定的位置插入s[i]
    }
}

int main(int argc, char const *argv[]) { 
    int a[11], i;                                   // 定義數(shù)組及變量為基本整型
    printf("請輸入10個數(shù)據(jù):\n");
    for (i = 1; i <= 10; i++)
        scanf("%d", &a[i]);                         // 接收從鍵盤中輸入的10個數(shù)據(jù)到數(shù)組a中
    printf("原始順序:\n");
    for (i = 1; i < 11; i++)
        printf("%3d", a[i]);                        // 將未排序前的順序輸出
    insort(a, 10);                                  // 調用自定義函數(shù)isort()
    printf("\n插入數(shù)據(jù)排序后順序:\n");
    for (i = 1; i < 11; i++)
        printf("%3d", a[i]);                        // 將排序后的數(shù)組輸出
    printf("\n");
}

示例結果:

$ gcc ex058.c -o demo
$ ./demo
請輸入10個數(shù)據(jù):
34
12
45
3
8
23
89
52
24
10
原始順序:
 34 12 45  3  8 23 89 52 24 10
插入數(shù)據(jù)排序后順序:
  3  8 10 12 23 24 34 45 52 89
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容