早教吧 育儿知识 作业答案 考试题库 百科 知识分享

求用C语言编写程序(1)请编写一个函数,从键盘上输入一个数,将该数插入到一个有序的数组中,该数组仍然有序。(2)在(1)的基础上完成直接插入排序法,对一组无序的数,使用直接

题目详情
求用C语言编写程序
(1)请编写一个函数,从键盘上输入一个数,将该数插入到一个有序的数组中,该数组仍然有序。
(2)在(1)的基础上完成直接插入排序法,对一组无序的数,使用直接插入排序法来进行排序。该排序的思想是:对于一组n个数,第一个数记为有序的序列,将第二个数插入后得到2个数的有序序列,将第3个数插入后得到3个数的有序序列,直到第n个数插入,得到n个有序的序列,完成排序。
▼优质解答
答案和解析
/*经测试,程序均正确运行,希望能帮助你*/
/******************1*****************/
#include
void insert(int *arr,int n,int val)
{
int i;
for(i=n;arr[i-1]>val && i>0;i--)
arr[i]=arr[i-1];
arr[i]=val;
}
int main()
{
int arr[20]={1,3,9,11,20,24,32};
int v1=18,v2=0,v3=40;
int i;
printf("插入18\n");
insert(arr,7,v1);
for(i=0;i<8;i++)
printf("%d ",arr[i]);
printf("\n");
printf("插入0\n");
insert(arr,8,v2);
for(i=0;i<9;i++)
printf("%d ",arr[i]);
printf("\n");
printf("插入40\n");
insert(arr,9,v3);
for(i=0;i<10;i++)
printf("%d ",arr[i]);
return 0;
}
/******************2*****************/
#include
#define N 10
void insert(int *arr,int n,int val)
{
int i;
for(i=n;arr[i-1]>val && i>0;i--)
arr[i]=arr[i-1];
arr[i]=val;
}
int main()
{
int arr[20],val;
int i;
printf("输入%d个整数:\n",N);
for(i=0;i {
scanf("%d",&val);
insert(arr,i+1,val);
}
printf("排序后:\n");
for(i=0;i printf("%d ",arr[i]);
return 0;
}
看了求用C语言编写程序(1)请编写...的网友还看了以下:

一批零件,如果第一天甲做,第二天乙做,这样交替轮流做,恰好用整数天数完成.如果第一天乙做,第二天甲  2020-05-23 …

一个两位数,数字和是质数.而且,这个两位数分别乘以3,5,7之后,得到的数的数字和都仍为质数,满足  2020-06-16 …

7.将一个四位数的数字顺序颠倒过来,得到一个新的四位数,(这个数也叫原数的反序数),新数比原数大8  2020-07-05 …

求数,找数,在10000里面,既是完全平方数又是完全立方数的数你给我找出来有4个请给出那个数字是哪  2020-07-21 …

所有真约数(除本身之外的正约数)的和等于它本身的正整数叫做完全数.如:;;.已经证明:若是质数,则  2020-07-31 …

下列命题错误的是()A.实数与数轴上的点一一对应B.数轴上的点表示的数若不是有理数就一定是无理数C  2020-07-31 …

3.输出所有水仙花数到数组a,输出数组a。(说明:若一个3位数的各3.输出所有水仙花数到数组a,输  2020-07-31 …

一批零件,如果第一天甲做,第二天乙做,这样交替轮流做,恰好用整数天数完成.如果第一天乙做,第二天甲做  2020-11-06 …

一批零件,如果第一天甲做,第二天乙做,这样交替轮流做,恰好用整数天数完成.如果第一天乙做,第二天甲做  2020-11-06 …

一批零件,如果第一天甲做,第二天乙做,这样轮流交替做,恰好用整数天数完成.如果第一天乙做,第二天甲做  2020-11-06 …