C语言:输入一个10个整数的数组,按从小到大排序输出,然后再输入一个整数,插入到序列中,也符合排序

比如 10 20 30 40 50 60 70 80 90 100 插入一个数 52
输出为10 20 30 40 50 52 60 70 80 90 100
这个我会写,就是感觉我写的啰嗦,能简化么?
#include "stdio.h"
main()
{
int i,j,t,a[10],b[11];
for (i=0;i<10;i++)
scanf("%d",&a[i]);
for (i=0;i<9;i++)
for (j=0;j<9-i;j++)
if (a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for (i=0;i<10;i++)
printf("%-4d",a[i]);
printf("\n输入一个数,加入到排序中:");
scanf("%d",&b[0]);
for (i=0;i<10;i++)
b[i+1]=a[i];
for (i=0;i<10;i++)
if (b[i]>b[i+1])
{
t=b[i];
b[i]=b[i+1];
b[i+1]=t;
}
for (i=0;i<11;i++)
printf("%-4d",b[i]);
printf("\n");
}#include "stdio.h"
main()
{
int i;
char c[10];
scanf("%s",c);
for (i=0;i<9;i++)
printf("%c",c[9-i]);
printf("\n");
}
不要用指针,只能用for、while、数组、switch!!!!求个简化的程序
我好像复制多了,后面加了一个逆序输出字符串的代码再来一回:
#include "stdio.h"
main()
{
int i,j,t,a[10],b[11];
for (i=0;i<10;i++)
scanf("%d",&a[i]);
for (i=0;i<9;i++)
for (j=0;j<9-i;j++)
if (a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for (i=0;i<10;i++)
printf("%-4d",a[i]);
printf("\n输入一个数,加入到排序中:");
scanf("%d",&b[0]);
for (i=0;i<10;i++)
b[i+1]=a[i];
for (i=0;i<10;i++)
if (b[i]>b[i+1])
{
t=b[i];
b[i]=b[i+1];
b[i+1]=t;
}
for (i=0;i<11;i++)
printf("%-4d",b[i]);
printf("\n");
}

实在觉得繁琐,你的程序有2个地方可以改进
1,排序的时候不用冒泡算法,取用其它的排序算法
2,插入的时候可以用二分插入法,比你上面的算法效率高多了追问

哪个排序算法最简单?
二分插入法我去百度查查,不明白

追答

冒泡最简单,可是效率基本上最低,其它的都比这个要难点,

二分插入:先用二分查找方法找到比他大的数(要插入的数就插在他前面)
然后,先向后移动数据
最后插入数据

注意二分插入法的前提是数据里面的数据必须有序,不然无法成功

追问

神一样的解释,我明白了,我靠,还有这种插法?学无止境啊!

温馨提示:内容为网友见解,仅供参考
无其他回答

...10个整数,按从小到大排序,再输入一个整数,插入到已排好序的数组中...
第1个应该很简单,定义数组大一点,输入要查找的数据后,对比找到第一个比它大的数的位置,然后将该位置后的数全部顺延一位,将数据放入该位置 第2个 include<stdio.h> define N 20 \/\/宏定义数组大小 int main(){ int a[N];int n,Con=0,i=0,Total_p;printf("input n(n<%d):",N);scanf...

...10个从小到大有序排列的整数后,再输入一个整数将其插入其中,使其仍...
main(){ int a[6]={5,26,31,78,91},i,t,k;printf("---\\n原数组:");for (i=0;i<5;i++){ printf(" %d ",a[i]);} printf("\\n插入一个数:");scanf("%d",&t);if (t>=a[0] && t<a[4]){ for (i=0;i<5;i++){ if (t>=a[i]&&t<=a[i+1])break;} ...

...10个有序(由小到大)整数存入数组a,再输入一个整数x,在数组a中插入x...
define Pi 3.1415926 int main(){ int a[11],i,x;printf("请输入10个由小到大的整数:\\n");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("请输入要插入的数:\\n");scanf("%d",&x);for(i=9;i>=0&&a[i]>x;i--)a[i+1]=a[i];a[i+1]=x;printf("插入后的数组:\\...

C语言程序设计: 从用户输入10个整数,对其按照从小到大的顺序排序,并输...
首先,我们需要包含头文件,以便使用标准输入输出函数。在主函数main()中,我们定义一个长度为10的整数数组a,并设置两个变量i和j来辅助排序过程,以及一个临时变量temp用于交换元素值。接着,通过printf()函数提示用户输入10个整数,并使用for循环读取用户的输入。在排序部分,使用嵌套的for循环,外层循环...

C语言 要求输入10个,将它按从大到小排序,再输入一个数插入到排好序的...
\/*不知道插入的要求是什么? 先写一下10个数按从大到小排序的程序*\/ include <conio.h> \/* 此头函数请不要删除 *\/ include <math.h> main(){ int i,j,p,q,s,a[10];float jun;printf("\\n input 10 numbers:\\n");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<...

C语言编程输入10个整数存入数组a中然后按从打到小的顺序排序并输
编写一个C语言程序,用于输入10个整数存入数组a中,然后按照从大到小的顺序排序并输出。程序实现步骤如下:首先,引入必要的头文件<stdio.h>。接着,使用int main()函数作为程序的主入口。在主函数内部,定义一个整数型数组a[10]和两个整数变量i和j。使用for循环,从0到9遍历数组,输入每个元素的...

c语言实现从键盘上输入10个数,并输出。
用选择排序法编写c语言,实现从键盘上输入10个数,按从大到小的顺序排序输出。代码如下:include<stdio.h> int main(){ int i,j,a[10],t;printf("输入数");for (i = 0; i < 10; i++)scanf("%d",&a[i]);for (i = 0; i < 10; i++){ for (j = i + 1; j < 10;j...

C语言 从键盘输入10个整数,将这10个整数按从小到大的顺序输出。
1、打开软件进入页面,点击文件-新建-文件-C++ Source File。2、输入预处理命令和主函数:#include<stdio.h>\/*输入输出头文件*\/void main()\/*空类型:主函数*\/。3、定义变量和数组的数据输入10个数:int a[10],i,t;\/*定义变量和数组数据类型为整型*\/printf("输入10个整数:");\/*输出文字...

...再输入一个数,要求用折半查找法找出该数是数组
include <stdio.h>#define N 10typedef int datatype;void Sort(datatype a[],int n) {int i,j,k;int num;for(i = 0; i < n - 1; ++i) {k = i;for(j = i + 1; j < n; ++j)if(a[k] < a[j]) k = j;if(k != i) {num = a[k];a[k] = a[i];a[i...

...输入10个整数存放到数组中,然后进行从小到大的排序,最后输出该数...
int main(void){ int arr[10],i,j,temp,k;printf("please input ten data : ");for(i=0;i<10;i++)scanf("%d",&arr[i]);\/*从小到大排序*\/ for(i=0;i<9;i++){ temp = arr[i];for(j=i+1;j<10;j++){ if(temp>arr[j])k = j;} arr[i] = arr[k];arr[k] =...

相似回答