在C语言中,按升序输入10个数字,然后任意插入一个数字,按照升序排列,急求、、、最简单的、、

如题所述

O(n)的方法就是来一个数字冒一次泡。看成100了。你把100都换成10吧(99换成9)。。 #include <stdio.h>int a[100 + 10] ;
void fill(){
int i ;
for(i = 0 ; i < 100 ; i++) a[i] = i * i + 1 ;
}
void insert(int x){
int i ;
for(i = 99 ; i >= 0 ; i--) {
if(a[i] > x) a[i + 1] = a[i] ;
else break ;
}
a[i + 1] = x ;
}
int main(){
int x , i ;
while(scanf("%d" , &x) == 1){
fill() ;
for(i = 0 ; i < 100 ; i++){
printf("%6d" , a[i]) ;
if(i % 10 == 9) printf("\n") ;
}
insert(x) ;
for(i = 0 ; i < 101 ; i++){
printf("%6d" , a[i]) ;
if(i % 10 == 9) printf("\n") ;
}
printf("\n");
}

return 0 ;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-23
#include <stdio.h>void main()
{
int a[11],i,x;
printf("升序输入10个数:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("输入一个数:");
scanf("%d",&x);
for(i=9;i>=0&&a[i]>x;i--)
a[i+1]=a[i];
a[i+1]=x;
for(i=0;i<11;i++)
printf("%d ",a[i]);
printf("\n");
}本回答被网友采纳
第2个回答  2013-12-03
冒泡法#include <stdio.h>
void main()
{
int i, n=30, j, m;
int MM[]

for(i=0;i<30;i++)
scanf("%d",MM[i]); /*输入数字*/
for (i=0; i<n; i++)
{
printf("%6d",MM[i]);
if ((i+1)%10==0)
printf("\n");
}
for (i=1; i<n; i++)
{
for (j=0; j<n-i; j++)
{
if (MM[j]>MM[j+1])
{
m=MM[j];
MM[j]=MM[j+1];
MM[j+1]=m;
}
}
}
printf("\nThe sorted integers:\n\n");
for (i=0; i<n; i++)
{
printf("%6d",MM[i]);
if ((i+1)%10==0)
printf("\n");
}
}
第3个回答  推荐于2018-03-23
#include <stdio.h>void main()
{
int a[11],i,x;
printf("升序输入10个数:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("输入一个数:");
scanf("%d",&x);
for(i=9;i>=0&&a[i]>x;i--)
a[i+1]=a[i];
a[i+1]=x;
for(i=0;i<11;i++)
printf("%d ",a[i]);
printf("\n");
}本回答被网友采纳
第4个回答  2013-12-03
冒泡法#include <stdio.h>
void main()
{
int i, n=30, j, m;
int MM[]

for(i=0;i<30;i++)
scanf("%d",MM[i]); /*输入数字*/
for (i=0; i<n; i++)
{
printf("%6d",MM[i]);
if ((i+1)%10==0)
printf("\n");
}
for (i=1; i<n; i++)
{
for (j=0; j<n-i; j++)
{
if (MM[j]>MM[j+1])
{
m=MM[j];
MM[j]=MM[j+1];
MM[j+1]=m;
}
}
}
printf("\nThe sorted integers:\n\n");
for (i=0; i<n; i++)
{
printf("%6d",MM[i]);
if ((i+1)%10==0)
printf("\n");
}
}
相似回答