C 语言 实现int数组的插值排序

C 语言 实现int数组的插值排序

 

/*** Insert Sort ***/
#include <stdio.h>

// 将int数据打印出来
void PrintArr(int* a,int len)
{
for (int i = 0;i<len;i++)
{
printf(" %d ",a[i]);
}
printf("\n");
}

void InsertSort(int* arr,int len)
{
// X 用来保存 要插入的数值
int x = 0;
// 从第二个数开始 与前面所有的数进行比较.如果小于前面的数,
// 就把这个值 放到前面那个数的位置其实值向后移一位.
// 产生插入的效果
for ( int i = 1 ;i < len ;i ++)
{
// 这里 j = 0 且 < i 意思就是i之前的所有数值的个数
for (int j = 0; j < i;j ++)
{
if( *(arr + i) < *(arr + j) )
{
// 把 i 之的数据保存一份. 因为要进行移动位置的操作.
x = *(arr + i);
// 把 j(包括) 与 i(不包括因为要放到 j的位置) 之间的数后面移一位
for (int w = i - j;w > 0;w --)
{
*(arr + w + j) = *(arr + w + j - 1);
}
// 最后 把记录的 i 处的数据放到 j 处位置
*(arr + j ) = x;
}
}
PrintArr(arr,len);
}
}

int main()
{
int a[] = {4,2,1,6,8,3,9,5,0};
int len = sizeof(a)/sizeof(int);

InsertSort(a,len);

}



posted @ 2012-03-28 22:41  easyfrog  阅读(894)  评论(0编辑  收藏  举报