21全程班2021定向班
查看: 562|回复: 1

2020线性表顺序表示19 解答错误

[复制链接]

1

主题

2

帖子

0

积分

王道论坛新道友

考研年份
2021
注册时间
2019-12-25
最后登录
2020-6-22
发表于 2019-12-25 15:57 | 显示全部楼层 |阅读模式
题目:
线性表(a1,a2,a3,……an)中元素递增有序且按顺序存储于计算机内。要求设计一算法完成用最少时间在表中查找出数值为x的元素,若找到将其与后继元素位置交换,若找不到将其插入表中并使表中元素扔递增有序。

题目截图连接不可上传,可下载附件

题目 没有说明是否重复(看其他算法题 递增有序 存在重复情况)  且没有说明达到数组有效末尾(赋值过的最大索引)如何处理
解答按照没有重复处理 且处理插入情况 没有进行数组长度更新

数组声明长度100

给两组测试数组[1,2,2,3,4,5,6,7,0,……]  x=2
[1,2,3,4,5,6,7,0,……] x=7


            以下是CSDN中一篇 二分法查找递增含重复元素的 首个出现的元素下标方法
int search_num(int arry[], int len, int elem)
{
int low = 0, mid = 0, high = 0;
high = len -1;//最大下标
while(low <= high)
{
mid = (low + high) / 2;
if((arry[mid] == elem) && (arry[mid-1] < elem)) return mid;//与折半查找相比,加了前一个数组值的比较,确保要查找的数在数组首次出现
else if(arry[mid] <= elem) high = mid -1;//比较中多了个“=”,确保在重复数中进行前推查找
else if(arry[mid] > elem) low = mid + 1;//在大数部分和折半查找一致
}
printf("elem: %d 在数组中不存在.\n", elem);
return 0;
}
————————————————
版权声明:本文为CSDN博主「luzhuioa」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:h防ttps://bl和og.c鞋sdn.net/luzhuioa/article/details/24930963


您需要登录后才可以回帖 登录 | 注册

本版积分规则

王道2021图书官方预售

小黑屋|Archiver|手机版|王道论坛 | 粤ICP备19140740号 |

GMT+8, 2020-8-12 08:37 , Processed in 0.036279 second(s), 25 queries .

Powered by Discuz!

© 2008-2020 CSKAOYAN.COM

快速回复 返回顶部 返回列表