1. 程式人生 > >插入法排序

插入法排序

問題如下:任意輸入一串文字,使用排序法按照順序排出來。
分析問題:首先看一下這個題,經過讀題我們得知使用方法是排序法,先說一下什麼是插入法:如果有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 {
 7
s[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); 27
printf("插入資料後排序:\n"); 28 for(i=1;i<11;i++) 29 printf("%d",a[i]); 30 printf("\n"); 31 }