红联Linux门户
Linux帮助

Linux下的c基础编程——按原顺序插入元素

发布时间:2016-11-16 11:32:59来源:linux网站作者:goodman_liqifei
我们有了选择法排序,现在我们将用它进行一个小规模的扩展,今天我们写一个插入函数,其中我们先用选择法对数组进行排序,再按照原顺序进行插入一个元素。
 
首先我们还是来展示一下我们的代码,这个代码的长度相比于前几篇的代码都要长一些。
 
#include <stdio.h>
void choic_arrage(int a[10])/*先通过选择法对数组元素进行排序*/  
{  
int i;  
int j;  
int k;  
int temp;
for(i = 0; i < 10; i++)  
{  
k = i;
for(j = i+1; j < 10; j++)  
{  
if(a[k] > a[j])  
{  
k = j;  
}  
}
if(k != i)  
{  
temp = a[k];  
a[k] = a[i];  
a[i] = temp;  
}  
}
for(i = 0; i < 10; i++)  
{  
printf("%-3d",a[i]);  
}  
printf("\n");  
}
int  compare(int a[10],int n) /*输入要插入的数字,计算出它将插入的位置*/  
{  
int i;
for(i = 0; i < 10; i++)  
{  
if(i != 9)  
{  
if(a[i] < n && n < a[i+1])  
{  
return i+1;  
}  
}  
else  
{  
printf("error!\n");  
}  
}  
}
void insert(int a[10],int b[11],int m,int n)  /*插入数字,并在数组b【11】中打印出来*/  
{  
int i;
for(i = 0; i < m; i++)  
{  
b[i] = a[i];  
}  
b[m] = n;  
for(i = m; i < 10; i++)  
{  
b[i+1] = a[i];  
}  
for(i = 0; i < 11; i++)  
{  
printf("%-3d",b[i]);  
}  
printf("\n");  
}
int main()  
{  
int a[10];  
int b[11];  
int i;  
int n;  
int m;
for(i = 0; i < 10; i++)  
{  
scanf("%d",&a[i]);  
}
choic_arrage(a);
printf("please input n!\n");  
scanf("%d",&n);
m = compare(a,n);  
printf("%d\n",m);  
insert(a,b,m,n);
return 0;  
}
 
这次代码稍微长了一些,可能是我自己的思路有问题,如果大家有什么好的建议,请提出,我们互相学习互相进步。
 
下面将在Linux下编译运行这个程序。运行结果见下图:
Linux下的c基础编程——按原顺序插入元素
 
本文永久更新地址:http://www.linuxdiyf.com/linux/26043.html