插入排序描述(來自百度百科):php
⒈ 從第一個元素開始,該元素能夠認爲已經被排序 數組
⒉ 取出下一個元素,在已經排序的元素序列中從後向前掃描 ⒊ 若是該元素(已排序)大於新元素,將該元素移到下一位置 ⒋ 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置 ⒌ 將新元素插入到下一位置中 ⒍ 重複步驟2
- #include <stdio.h>
- void insertion_sort(int arr[],int length){
- int s;
- int i,j,temp;
- for(i=1;i<length;i++){
- for(j=i-1;j>=0;j--){
- if(arr[j] > arr[j+1]){
- temp = arr[j];
- arr[j] = arr[j+1];
- arr[j+1] = temp;
- }
- }
- }
- }
- void printArr(int arr[],int length){
- int i;
- for(i=0;i<length;i++){
- printf("%d,",arr[i]);
- }
- printf("\n");
- }
- int main(void){
- int length;
- printf("please input the sort array length:");
- scanf("%d",&length);
- printf("you length number is:%d\n",length);
- int arr[length];
- printf("please input %d numbers:\n",length);
- int i;
- for(i = 0;i<length;i++){
- scanf("%d",&arr[i]);
- }
- printf("you input numbers:");
- printArr(arr,length);
- insertion_sort(arr,length);
- printf("after sorting:");
- printArr(arr,length);
- }
PS:在將數組做爲函數參數傳遞的時候,開始當作了php同樣處理,結果調試了很久都不正確,百度之,原來c語言將數組做爲參數的時候都是傳遞數組的首地址的指針。ide