标签:
输入一个数,插入到已排序的队列中
第一:定义一个已经排好的整型数组
如:
int arry[7]={2,3,5,11,15,17};
或输入一串整型的数组,再排序(冒泡、选择都可以)
下面我们用冒泡排序方法:
#include<stdio.h> int main() { int i,j,min=0, num[7]; for(i=0;i<6;i++) { printf("请输入第%d个数",i+1); scanf("%d",&num[i]); } for(j=0;j<6;j++) { for(i=0;i<6;i++) { if(num[i]>num[i+1]) { min=num[i+1]; num[i+1]=num[i]; num[i]=min; } } } for(i=0;i<6;i++) { printf(" %d ",num[i]); }
return 0; }
第二:输入一个数num1;
代码:
int num1; printf("请数入一个是数:"); scanf("%d",&num1);
第三:找到输入数插入的位置(找到下标index)
分三种情况
①、num1大于前一个数,小于后一个数
②、num1小于最小的数
③、num1大于最大的数
int i=0; int index=0; for(i;i<6;i++)//找到index要插入的下标位置 { if(num1>=num[i]&&num1<=num[i+1]) { index=i+1; break; } if(num1<num[0]) { index=0; break; } if(num1>num[5]) { index=6; break; } }
第四:找到下标后(插入的位置),从插入的位置开始到数组结束之间的数,后面一个等于前面一个值(实现移动赋值过程)
for(i=6;i>index;i--)//移动 { num[i]=num[i-1]; } num[index]=num1;//找到下标赋值
第五:输出数组num
for(i=0;i<7;i++) { printf("%d,",num[i]); }
整体代码如下:
#include<stdio.h> int main(void) { int num[7]={2,3,5,11,15,17},num1; printf("请数入一个是数:"); scanf("%d",&num1); int i=0; int index=0; for(i;i<6;i++)//找到index要插入的下标位置 { if(num1>=num[i]&&num1<=num[i+1]) { index=i+1; break; } if(num1<num[0]) { index=0; break; } if(num1>num[5]) { index=6; break; } } for(i=6;i>index;i--)//移动 { num[i]=num[i-1]; } num[index]=num1;//找到下标赋值 for(i=0;i<7;i++) { printf("%d,",num[i]); } }
标签:
原文地址:http://www.cnblogs.com/beta-data/p/4439183.html