首页 > algorithm > 排序1(直接插入排序)

排序1(直接插入排序)

  今天看《算法导论》,出现的第一个算法,直接插入排序,我就试着实现了一下,思路也能看懂,但是实现起来,还是费了不少的力气,实现出来之后,还发现一个问题,在VC下面运行正常,在Mac下面就出现了错误。
  总是搞不明白,后来发现了,原来是数组的下标越界造成的,访问了一个不存在的元素,在Mac下面是0,在VC下面是未知的很大的数,结果VC下面看着冒死很正确 @_@ !
  把代码给写出来,经过gcc vision4.2.1 && VC6.0测试通过。
#include <stdio.h>
void insertSort(int * a)
{
int i,j,flag=a[0];
for(i=1;i<10;i++)
{
if(a[i]<a[i-1])
{
flag=a[i];
for(j=i;flag<a[j-1]&&j-1>=0;j--)
a[j]=a[j-1];
a[j]=flag;
}
else
flag=a[i];
}
return;
}
int main()
{
int a[10]={1,7,9,4,5,2,3,11,8,6};
int i;
insertSort(a);
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}

  1. Atsushi 9月 2nd, 2012 @ 06:15 | #1

    Sharp thinknig! Thanks for the answer.

评论提交中, 请稍候...

留言


可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
Trackbacks & Pingbacks ( 0 )
  1. 还没有 trackbacks