解题思路:插入排序的核心思路是拿出一个数,依次和前面的数做比较
第一轮:i=1,j=i-1=0;1 1 3 4 5 6 7 8 9 10->2 1 3 4 5 6 7 8 9 10
第二轮:i=2,j=1;2 1 1 4 5 6 7 8 9 10->2 2 1 4 5 6 7 8 9 10->3 2 1 4 5 6 7 8 9 10
.......
以此类推
注意事项:在wile循环结束后,其实应该是a[j]=temp;但是while在最后一步执行了j--,所以要a[j+1]=temp;
参考代码:
#include<stdio.h>
#define N 10
int main()
{
int a[N];
for(int b=0;b<N;b++)
{
scanf("%d",&a[b]);
}
for(int i=1;i<N;i++)
{
int temp=a[i];
int j=i-1;
while(j>=0&&a[j]<temp)
{
a[j+1]=a[j];
j--;
}
a[j+1]=temp;//因为j--了,所以要加1
}
for(int n=0;n<N;n++)
{
printf("%d ",a[n]);
}
}
0.0分
2 人评分
Biggest Number (C++代码)回溯法浏览:1676 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:1084 |
A+B for Input-Output Practice (C++代码)浏览:632 |
回文串 (C语言代码)浏览:3095 |
成绩转换 (C语言代码)浏览:1048 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:1482 |
用筛法求之N内的素数。 (C语言代码)浏览:711 |
简单的a+b (C语言代码)浏览:618 |
蚂蚁感冒 (C语言代码)浏览:816 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:331 |