C语言使用插入排序的算法进行排序案例代码

题目描述

编写程序,在主函数中用随机函数产生20个[0~100)之间的整数,存放于一个一维数组中,先输出排序前的数据,再使用插入排序的算法进行排序,最后输出排好序的数据。

(提示:注意“观察哨方法”的使用;)

案例代码

以下是使用C语言编写的程序,实现了插入排序算法来对随机产生的20个整数进行排序,并使用了观察哨方法:

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

#define SIZE 20

// 插入排序函数
void insertionSort(int arr[], int n) {
    int i, j, temp;
    // 使用观察哨,将数组的最后一个元素作为观察哨
    for (i = 1; i < n; i++) {
        arr[0] = arr[i]; // 将观察哨放在数组末尾
        j = i - 1;
        // 从已排序的部分向前比较,将大于观察哨的元素向后移动
        while (arr[j] > arr[0]) {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = arr[0]; // 将观察哨插入到正确的位置
    }
}

int main() {
    int arr[SIZE + 1]; // 增加一个额外位置用于观察哨
    int i;

    // 使用当前时间作为随机数种子
    srand(time(NULL));

    // 产生随机数并存入数组
    printf("生成的随机数为:\n");
    for (i = 1; i <= SIZE; i++) {
        arr[i] = rand() % 100; // 生成0~99的随机数
        printf("%d ", arr[i]);
    }
    printf("\n");

    // 使用插入排序算法对数组进行排序
    insertionSort(arr, SIZE + 1);

    // 输出排序后的数组
    printf("排序后的结果为:\n");
    for (i = 1; i <= SIZE; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}

这个程序首先生成了20个[0, 99]之间的随机整数,并将它们存放在一个数组中。然后使用插入排序算法对数组进行排序,同时使用观察哨方法,将数组的最后一个元素作为观察哨。最后输出排序前后的结果。

© 版权声明
THE END
喜欢就支持一下吧
点赞15赞赏 分享