最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

PTA

IT圈 admin 14浏览 0评论

PTA

二分查找法

题目:用二分法在一个有序数列{1,2,3,4,5,6,7,8,9,10}中查找key值,若找到key则输出其在数组中对应的下标,否则输出not found。

输入格式:

直接输入一个要查找的正整数key。没有其它任何附加字符。

输出格式:

找到则在一行中按照“weizhi:下标”的格式输出其在数组中对应的下标,否则输出not found。

输入样例1:

4

输出样例1:

weizhi:3

输入样例2:

15

输出样例2:

not found


#include <iostream>using namespace std;int BinarySearch(int *p, int n, int x);int main()
{int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};   int x;cin >> x;int m;m = BinarySearch(a, 10, x);if (m >= 0)cout << "weizhi:" << m;elsecout << "not found";
}int BinarySearch(int *p, int n, int x)
{int low, mid, high;  low = 0; high = n - 1;while (low <= high){mid = (low + high) / 2;if (x == p[mid])   return mid;else if (x < p[mid])high = mid - 1;elselow = mid + 1;}return -1;  
}

小结:

二分查找 ——Binary Search

一、含义: 二分查找也称 折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。时间复杂度:O(log2n)

二、代码实现

int BinarySearch(int *p, int n, int x)   // n代表数组元素的个数,  查找的数为X
{int low, mid, high;  // 区间上,下界及中间值 low = 0;  high = n - 1;// 循环判定条件:合理的查找范围while (low <= high){mid = (low + high) / 2;   //  为了防止数值溢出if (x == p[mid])    // *(p + mid) 等价于 p [mid] return mid;else if (x < p[mid])high = mid - 1;elselow = mid + 1;}return -1;   // -1代表没找到 	
}

注:

循环判定条件:low <= high
为了防止数值溢出:mid = (low + high) / 2;
p[mid]不等于x时,high = mid - 1;low = mid + 1;

PTA

二分查找法

题目:用二分法在一个有序数列{1,2,3,4,5,6,7,8,9,10}中查找key值,若找到key则输出其在数组中对应的下标,否则输出not found。

输入格式:

直接输入一个要查找的正整数key。没有其它任何附加字符。

输出格式:

找到则在一行中按照“weizhi:下标”的格式输出其在数组中对应的下标,否则输出not found。

输入样例1:

4

输出样例1:

weizhi:3

输入样例2:

15

输出样例2:

not found


#include <iostream>using namespace std;int BinarySearch(int *p, int n, int x);int main()
{int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};   int x;cin >> x;int m;m = BinarySearch(a, 10, x);if (m >= 0)cout << "weizhi:" << m;elsecout << "not found";
}int BinarySearch(int *p, int n, int x)
{int low, mid, high;  low = 0; high = n - 1;while (low <= high){mid = (low + high) / 2;if (x == p[mid])   return mid;else if (x < p[mid])high = mid - 1;elselow = mid + 1;}return -1;  
}

小结:

二分查找 ——Binary Search

一、含义: 二分查找也称 折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。时间复杂度:O(log2n)

二、代码实现

int BinarySearch(int *p, int n, int x)   // n代表数组元素的个数,  查找的数为X
{int low, mid, high;  // 区间上,下界及中间值 low = 0;  high = n - 1;// 循环判定条件:合理的查找范围while (low <= high){mid = (low + high) / 2;   //  为了防止数值溢出if (x == p[mid])    // *(p + mid) 等价于 p [mid] return mid;else if (x < p[mid])high = mid - 1;elselow = mid + 1;}return -1;   // -1代表没找到 	
}

注:

循环判定条件:low <= high
为了防止数值溢出:mid = (low + high) / 2;
p[mid]不等于x时,high = mid - 1;low = mid + 1;

发布评论

评论列表 (0)

  1. 暂无评论