c語言插入排序

 插入排序描述(來自百度百科):php

      ⒈ 從第一個元素開始,該元素能夠認爲已經被排序 數組

 
  ⒉ 取出下一個元素,在已經排序的元素序列中從後向前掃描
 
  ⒊ 若是該元素(已排序)大於新元素,將該元素移到下一位置
 
  ⒋ 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置
 
  ⒌ 將新元素插入到下一位置中
 
  ⒍ 重複步驟2

 

  
  
  
  
  1. #include <stdio.h> 
  2.  
  3. void insertion_sort(int arr[],int length){ 
  4.         int s; 
  5.         int i,j,temp; 
  6.         for(i=1;i<length;i++){ 
  7.                 for(j=i-1;j>=0;j--){ 
  8.                         if(arr[j] > arr[j+1]){ 
  9.                                 temp = arr[j]; 
  10.                                 arr[j] = arr[j+1]; 
  11.                                 arr[j+1] = temp; 
  12.                         } 
  13.                 } 
  14.         } 
  15.  
  16. void printArr(int arr[],int length){ 
  17.         int i; 
  18.         for(i=0;i<length;i++){ 
  19.                 printf("%d,",arr[i]); 
  20.         } 
  21.         printf("\n"); 
  22.  
  23. int main(void){ 
  24.         int length; 
  25.         printf("please input the sort array length:"); 
  26.         scanf("%d",&length); 
  27.         printf("you length number is:%d\n",length); 
  28.         int arr[length]; 
  29.         printf("please input %d numbers:\n",length); 
  30.         int i; 
  31.         for(i = 0;i<length;i++){ 
  32.                 scanf("%d",&arr[i]); 
  33.         } 
  34.         printf("you input numbers:"); 
  35.         printArr(arr,length); 
  36.         insertion_sort(arr,length); 
  37.         printf("after sorting:"); 
  38.         printArr(arr,length); 

PS:在將數組做爲函數參數傳遞的時候,開始當作了php同樣處理,結果調試了很久都不正確,百度之,原來c語言將數組做爲參數的時候都是傳遞數組的首地址的指針。ide

相關文章
相關標籤/搜索