分析:从数组最后一个元素开始向前比较,如果比要插入的数小,则把这个数后移一位,继续向前比较,直到找到一个比要插入的数小的元素位置,将要插入的数插入到这个位置后面。注意,如果要插入的数比数组中所有元素都小,需要将其插入到数组的最前面。插入完成后,数组仍按降序排列,则需要对数组进行一次从大到小的排序。可以倒序遍历数组,比较相邻两个元素的大小,如果前一个元素比后一个元素小,则交换两个元素的位置,一直交换到数组的开头,排序完成。

代码实现:

#include <stdio.h>

void fun(int *p, int num) {
    int i;
    // 从数组最后一个元素开始向前比较
    for (i = 5; i >= 0; i--) {
        if (num > p[i]) {
            // 如果比要插入的数小,则把这个数后移一位
            p[i + 1] = p[i];
        } else {
            // 找到一个比要插入的数小的元素位置,将要插入的数插入到这个位置后面
            p[i + 1] = num;
            break;
        }
    }
    // 如果要插入的数比数组中所有元素都小,需要将其插入到数组的最前面
    if (i == -1) {
        p[0] = num;
    }
}

int main() {
    int a[10] = {86, 81, 78, 68, 45, 35};
    int num;
    // 输入整数 num
    scanf("%d", &num);
    // 调用函数完成插入操作
    fun(a, num);
    // 输出插入数据后的数组
    for (int i = 0; i < 7; i++) {
        printf("%d ", a[i]);
    }
    return 0;
}

示例输入:

15

示例输出:

86 81 78 68 45 35 15

C语言数组插入排序算法:降序排列数组中插入元素

原文地址: https://www.cveoy.top/t/topic/ol92 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录