| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 875 人关注过本帖
标题:求问一道数组插序题
只看楼主 加入收藏
a1179262986
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-12-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
求问一道数组插序题
要求是把一个整数插入已排好序的数组中,求解释insert_data函数的的各步骤这个函数看不懂
#include  <stdio.h>

void insert_data(int x,int y[8 ])
{
    int j;
for(j=6;j>=0;j--)
{
        if (x<y[j])
                break;
         else
                y[j+1]=y[j];
}
if (x>y[j])
          y[j]=x;
else
          y[j+1]=x;
}

void main()
{
     int k,data,a[8]={191,150,112,98,30,5,-14};
     scanf("%d",&data);
     insert_data( data,a );
     for(k=0;k<8;k++)
     printf("%d  ",a[k]);
}
搜索更多相关主题的帖子: 数组 data void int for 
2018-01-14 15:43
Deza_Mearine
Rank: 2
等 级:论坛游民
帖 子:9
专家分:24
注 册:2017-11-14
收藏
得分:20 
insert_data函数最开始的循环是将(从数组最后面开始)比x小的数向后面移动一位,如果遇到比x大的数则跳出循环(此时j就是那个比x大的数的数组下标)
if (x>y[j])
          y[j]=x;
else
          y[j+1]=x;
上述代码可以改成
y[j+1]=x;
就是将x插入到比他大的数后面
2018-01-14 15:58
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
意思一样:
void insert_data(int x, int y[8])
{
    int j;
    for(j=6; j>=0&&y[j]<x; j--)
        y[j+1]=y[j];
    y[++j] = x;
}


[此贴子已经被作者于2018-1-14 16:06编辑过]

2018-01-14 16:05
快速回复:求问一道数组插序题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022237 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved