程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 插入排序(C語言),插入排序c語言

插入排序(C語言),插入排序c語言

編輯:關於C語言

插入排序(C語言),插入排序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]);
   }
}

  

  

  

 

       

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved