C语言数组插入排序算法:降序排列数组中插入元素
分析:从数组最后一个元素开始向前比较,如果比要插入的数小,则把这个数后移一位,继续向前比较,直到找到一个比要插入的数小的元素位置,将要插入的数插入到这个位置后面。注意,如果要插入的数比数组中所有元素都小,需要将其插入到数组的最前面。插入完成后,数组仍按降序排列,则需要对数组进行一次从大到小的排序。可以倒序遍历数组,比较相邻两个元素的大小,如果前一个元素比后一个元素小,则交换两个元素的位置,一直交换到数组的开头,排序完成。
代码实现:
#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
原文地址: https://www.cveoy.top/t/topic/ol92 著作权归作者所有。请勿转载和采集!