#include<stdio.h>
int Insert_sort(int *p,int length)
{
int i,j,key;
for(i=1;i<=(length-1);i++)
{
if(*(p+i)<*(p+i-1))
{
key=*(p+i);
*(p+i)=*(p+i-1);
for(j=i-1;j>=0 &&key<*(p+j);--j)
{
*(p+j)=*(p+j-1);
}
*(p+j+1)=key;
}
}
return 0;
}
int main()
{
int a[10]={0,4,1,9,5,7,2,3,6,8};
int i;
int *p=&a[0];
Insert_sort(p,10);
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
}
通过指针调用的形式来改变原来数组中的值,这样就可以了。而每一个数组元素都可以用指针加位移量来确定
#include<stdio.h>
void main()


{
int i,j;
//a[0]为哨兵,所以它的值随便,但是注意要排序的是后面的几个,而且长度也是后面的几个。

int a[11]=
{0,1,2,4,9,0,3,8,6,7,5};
//插入排序
for(i=2;i<=10;++i)

{
if(a[i]<a[i-1])

{
a[0]=a[i]; //已经保存了a[i],所以下面就不必担心被冲掉。
a[i]=a[i-1];
for(j=i-2;a[0]<a[j];--j)

{
a[j+1]=a[j];
}
a[j+1]=a[0];
}

}
for(i=1;i<11;i++) //从a[1]开始输出,这样才消除了哨兵。

{
printf("%d ",a[i]);
}
}


注意真正的排序部分是从a[1]开始的,还有长度length不是数组的长度,而是实际要排序的长度,这里把a[i]冲掉的步骤很好,而且没有影响,因为已经保存下来了。

--------------------《数据结构 严蔚敏版》

1
#include<stdio.h>
2
void main()
3

{
4
int a[10]=
{0,4,1,9,5,7,2,3,6,8};
5
int key,i,j;
6
for(i=1;i<=9;i++)
7
{
8
if(a[i]<a[i-1])
9
{
10
key=a[i];
11
a[i]=a[i-1];
12
for(j=i-1;j>=0 && key<a[j];--j)
13
{
14
a[j]=a[j-1];
15
}
16
a[j+1]=key;
17
}
18
}
19
for(i=0;i<10;i++)
20
{
21
printf("%d ",a[i]);
22
}
23
}
24
posted on 2009-11-27 21:29
deercoder 阅读(328)
评论(0) 编辑 收藏 引用 所属分类:
数据结构和算法分析