标题:求问一道数组插序题
只看楼主
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: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-484231-1-1.html




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

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