輸入一個數,插入到已排序的隊列中
第一:定義一個已經排好的整型數組
如:
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]);
}
}