查找数组中的某位数,返回位置和查找次数
2020-04-05 07:27
387 查看
查找
编写无序顺序表顺序查找、有序顺序表顺序查找、二分查找算法。
输入输出格式
输入描述:
第一行是查找表的长度n(11<=n<=100) 第二行是查找表中的数据元素 第三行是要查找的数据元素的关键字
输出描述:
查找成功返回位序,不成功返回-1
无序的顺序查找比较的次数
查找成功返回位序,不成功返回-1
有序的顺序查找比较的次数
查找成功返回位序,不成功返回-1
二分查找比较的次数
#include <iostream> #include<algorithm> using namespace std; //顺序查找 int fun(int *a,int n,int key,int &cnt) { int i; for (i = 0; i < n; i++) if (a[i] == key) break; if (i ==n) return -1; cnt = i+1; return i ; } //有序查找 int fun2(int *a, int n, int key,int &cnt) { sort(a, a + n); int i; for (i = 0; i < n; i++) if (a[i] == key) break; if (i == n) return -1; cnt = i + 1; return i ; } //二分查找 int fun3(int *a, int n, int key,int &cnt) { int mid=0; int i = 0, l = 0, r = n - 1; bool f = 0; while (l <=r) { mid = (l + r) / 2; if (key == a[mid]) { i++; f = 1; break; } else if (a[mid] > key) { i++; r = mid - 1; } else { i++; l = mid + 1; } } if (f) { cnt = i ; return mid; } return-1; } int main() { int n, a[100], key; while (cin >> n) { for (int i = 0; i < n; i++) cin >> a[i]; cin >> key; int cnt = 0; cout << fun(a, n, key, cnt) << endl; cout << cnt << endl; cout << fun2(a, n, key, cnt) << endl; cout << cnt << endl; cout << fun3(a, n, key, cnt) << endl; cout << cnt << endl; } return 0; }
运行结果:
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- c++在数组中查找元素并返回位置下标,统计某元素出现次数程序
- 在排序的数组中二分查找一个元素,返回在数组中它第一次出现的位置
- lastIndexOf() 找出指定元素出现的所有位置(返回的是下标数组)---lastIndexOf() 这个方法是倒叙查找,正序的是indexOf()
- 查找字符串中对应的字符并返回数组位置
- 对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。 给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。
- (C语言)对于一个有序数组,输入一个元素。将该元素在数组中的位置索引出来(折半查找)。例如原数组为:1 2 6 7 9,输入待查找的元素如果没有找到则返回-1。
- 折半法查找数组中指定数字的位置并返回
- Search Insert Position 查找给定元素在数组中的位置,若没有则返回应该在的位置
- 人人都来写算法 之 在旋转数组中查找值并返回该值在数组中的位置
- 剑指offer——面试题38:数字在排序数组中出现的次数(利用二分查找来找第一次和最后一次的位置)
- 算法实验一:二分查找算法改进: 当搜索元素x不存在时,返回小于x的最大元素位置i和大于x的最小元素位置j. 当搜索元素在数组中时,i和j相同,均为x在数组中的位置。
- 查找数组中某个元素存在的所有位置,并将位置信息以数组的形式返回
- 二分查找解决数组中出现数字的次数
- java数组中根据元素查找位置 索引
- java常用算法之返回目标数字在有序数组中的位置(假设有序数组中不存在重复数字)
- php-Arrays 函数-array_search-在数组中查找给定的值并返回相应的键名
- matlab数组中求最大的几个数并返回其位置
- 在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)
- 在数组 arr 中,查找值与 item 相等的元素出现的所有位置
- 九度OJ 1349 数字在排序数组中出现的次数 -- 二分查找