插入排序(C语言)

输入一个数,插入到已排序的队列中

第一:定义一个已经排好的整型数组

如:

           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]);
}
}

  

  

  

 

上一篇:js 取得 Unix时间戳(Unix timestamp)


下一篇:Socket通信流程