插入排序描述(来自百度百科):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