插入法排序
阿新 • • 發佈:2018-12-18
問題如下:任意輸入一串文字,使用排序法按照順序排出來。
分析問題:首先看一下這個題,經過讀題我們得知使用方法是排序法,先說一下什麼是插入法:如果有n個數,則要進行n-1趟比較。在第1趟比較中要進行n-1次相鄰元素的兩兩比較,在第j趟比較中要進行n-j次兩兩比較。比較的順序從前往後,經過一趟比較後,將最值沉底(換到最後一個元素位置),最大值沉底為升序,最小值沉底為降序。程式碼如下:
1 #include <stdio.h> 2 int insort(int s[],int n) 3 { 4 int i,j; 5 for(i=2;i<=n;i++) 6 { 7s[0]=s[i]; 8 j=i-1; 9 while(s[0]<s[j]) 10 { 11 s[j+1]=s[j]; 12 j--; 13 } 14 s[j+1]=s[0]; 15 } 16 } 17 int mian() 18 { 19 int a[11],i; 20 printf("請輸入10個數據:\n"); 21 for(i=1;i<=10;i++) 22 scanf("%d",&a[i]); 23 printf("原始資料:\n"); 24 for(i=1;i<11;i++) 25 printf("%d",a[i]); 26 insort(a,10); 27printf("插入資料後排序:\n"); 28 for(i=1;i<11;i++) 29 printf("%d",a[i]); 30 printf("\n"); 31 }