插入排序是从第二个元素开始找起来,如果小于第一个元素就插入成为第一个元素。
如果从第n个元素找起,前面n个元素通过插入排序已经排好,第n+1个元素只需要和前面已经插入排序好的元素来进行比较,如果找到自己的位置t, 那么原来的t到n个元素的位置都要相应向后移动一位。
插入排序代码如下。
/*************************************************************************
> File Name: insert_sort.c
> Author: wayne
> Mail: @163.com
> Created Time: 2015/7/6 21:45:09
************************************************************************/
#include<stdio.h>
void array(int a[], int len)
{
int i;
for(i=0;i<len;i++)
{
printf("%d ", a[i]);
}
}
void insertsort(int a[], int len)
{
int i,j,tmp;
for(i=1; i< len; i++)
{
tmp = a[i];
for(j=i;j-1>=0;j--)
{
if(a[j-1] > tmp)
a[j] = a[j-1];
}
a[j] = tmp;
}
}
int main()
{
int a[] = {81,94,11,96,12,35,17,95,28,58,41,75,15};
int len = sizeof(a)/sizeof(int);
printf("%d\n", len);
printf("\n");
array(a, len);
printf("\n");
insertsort(a, len);
array(a,len);
return 0;
}
有错误,明天调试