c语言中的插入排序法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

否则,
从i以后
的每个
后移一
位(i始
Hale Waihona Puke Baidu
终小于5)
1
2
3
i
i
i
j 4 j5
j j
i
j
ij
ij
将x与a[i]比较,找出x的位置, 然后将后面的依次向后移动,为x留 出一个位置
i
j
当x=20:
i0
1
2
3
4 j5
在该种情况下,直接将x存在最 后一位即可
当x=-1:
for(j=5;j>0;j--)
{
a[j]=a[j-1];
}
a[j]=x; 注意:当j=1时,j-1=0,则j不能等于0,等
于0时,j-1超过界线
调用函数
#include"stdio.h" #define N 6 void fun(int a[],int x) {
int i,j=N-1; for(i=0;i<N-1;i++) {
if(x<=a[i]) {
for(;j>i;j--)
a[j]=a[j-1]; break;
} } a[j]=x; }
主函数
main() {
int a[N]={2,5,9,10,19},i,x;
scanf("%d",&x); fun(a,x); for(i=0;i<N;i++)
printf("%d ",a[i]); }
如何将一个数插入
已排好的数组中
当x=-1:
(i始终 小于5, 因为最 后一个 中无数)
一i 个数组a[6]={2,5,9,10,1j9}
i0
1
2
3 j4
5
i
j
……
ij ij
可以看到,当x<a[i](i=0)时, 直接将后面的数每个后移一位即 可
i
当x=10:
当x<=a[i]
0
时,将i
向后移
动一位,
相关文档
最新文档