首页 > 代码库 > c - 向一个排序好的数组插入一个数,插入后数组依然是排序好的
c - 向一个排序好的数组插入一个数,插入后数组依然是排序好的
概述
因为这里只是演示插入1个数,这里我不用malloc再重新分配,而是将原先数组的腾出一个占位符.
完整代码如下:
1 #include <stdio.h> 2 3 #define LEN 6 //数组的长度. 4 5 /* 6 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中. 7 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。 8 */ 9 10 //返回即将插入到数组中的下标.11 int 12 indexToInsert(int *a, int key) {13 //原数组下标的最后一个数的下标为:LEN - 2.14 for(int i = LEN - 2; i >= 0; i--) {15 if(key >= a[i]) 16 return i + 1; //插入下标为i的数的后面.17 }18 return 0; //待插入的数比数组中的值都小. 19 }20 21 void22 insert(int *a, int key) {23 int index = indexToInsert(a, key);24 for(int i = LEN - 2; i >= index; i--) //将下标为index到次末尾的数都后移.25 a[i + 1] = a[i];26 a[index] = key; //插入指定的值.27 }28 29 //打印.30 void31 show(int *a) {32 for(int i = 0; i < LEN; i++)33 printf("%d ", a[i]);34 printf("\n");35 }36 37 int38 main(void) {39 int a[] = {1, 2, 3, 5, 6, ‘\0‘}; //最后一个数是占位符.40 int key = 4; //将4插入.41 insert(a, key);42 show(a);43 printf("\n");44 }
c - 向一个排序好的数组插入一个数,插入后数组依然是排序好的
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。