黑马程序员技术交流社区
标题: 在一个排好序的数组中,输入一个数,按排序的顺序的规... [打印本页]
作者: 该有个目标了 时间: 2014-8-21 23:48
标题: 在一个排好序的数组中,输入一个数,按排序的顺序的规...
在一个排好序的数组中,输入一个数,按排序的顺序的规律将它插入到数组中
#include<stdio.h>
int main()
{
int a[6] = {1,3,6,7,9};
int i,j,x;
printf("insert data:");
scanf("%d",&x);
for(i=0;i<5;i++)
if(x<a)
break;
for(j=5;j>i;j--) //重这以后就看不懂了 求 高人 指点 ,要精辟点的,最好能用白话,不要专业术语。
a[j]=a[j-1];
a[j]=x;
printf("Now array a:\n");
for(i=0;i<6;i++)
printf("%4d",a);
printf("\n");
return 0;
}
作者: 爱情路13号 时间: 2014-8-22 01:16
你确定这是正确的代码么?以后用到C语言排序直接用冒泡排序。
作者: 小月格子猫 时间: 2014-8-22 01:30
本帖最后由 小月格子猫 于 2014-8-22 01:33 编辑
稍等一下,我整理一下
作者: 曹雨 时间: 2014-8-22 04:29
第一个for找出i位置,第二个是把数组从最后一个数开始直到i+1 都向后移一位。然后将数插入i处。第三个for输出。懂不?现在我用的手机。不懂回复我。中午用电脑给你回
作者: 王振宇351x 时间: 2014-8-22 08:37
- int main(){
- int a[6] = {1,3,6,7,9};
- int i,j,x;
- printf("insert data:");
- scanf("%d",&x);
- for(i=0;i<5;i++){
- if(x<a[i]) // 原来少了[i]!!
- break; // 让循环在i比a大的时候,停止. 这个时候就是..{1,3,6,7,9},,,i指向比x大的数所在的位置.
- }
- for(j=5;j>i;j--){
- a[j]=a[j-1]; // 从最后一位开始,把所有的数都赋值给后一位,当比x大的数后移一位的时候,停止.
- }
- a[j]=x; // 将x赋值到,第i位数. 此时,就完成.
-
- printf("Now array a:\n");
- for(i=0;i<6;i++)
- printf("%4d",a[i]); // 少了[i].输出数组
- printf("\n");
- return 0;
-
- }
复制代码
作者: 王振宇351x 时间: 2014-8-22 08:38
呵呵,, 点错了..
作者: ★彬★卍囧神 时间: 2014-8-22 11:27
修改,插入代码格式
作者: qq541955920 时间: 2014-8-22 11:45
看了看前面的 if(x<a[i] )少个i 。看了半天没看懂。 再往下看就好多了
作者: 十指紧扣 时间: 2014-8-22 11:54
求解……………………………………
作者: 从今以后 时间: 2014-8-22 14:04
谢谢楼上解答
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |