PAT基础编程题目-6-13 折半查找

PAT基础编程题目-6-13 折半查找

题目详情

题目地址:https://pintia.cn/problem-sets/14/problems/44932

C语言版

#include<stdio.h>

#define MAXSIZE 50
typedef int KeyType;

typedef  struct
{
   
	KeyType  key;
} ElemType;

typedef  struct
{
   
	ElemType* R;
	int  length;
} SSTable;

void  Create(SSTable& T)
{
   
	int i;
	T.R = new ElemType[MAXSIZE + 1];
	scanf_s("%d",&T.length);
	for (i = 1; i <= T.length; i++)
		scanf_s("%d",&T.R[i].key);
}

int  Search_Bin(SSTable T, KeyType k);

int main()
{
   
	SSTable T;  KeyType k;
	Create(T);
	scanf_s("%d",&k);
	int pos = Search_Bin(T, k);
	if (pos == 0) printf("NOT FOUND\n");
	else printf("%d\n", pos);
	return 0;
}

int  Search_Bin(SSTable T, KeyType k) {
   

	int low = 1;
	int high = T.length;
	int mid;
	while (low <= high) {
   
		mid = (low + high) / 2;
		if (T.R[mid].key == k)
			return mid;
		else if (T.R[mid].key > k)
			high = mid - 1;
		else
			low = mid + 1;
	}
	return 0;
}


C++版

#include<iostream>
using namespace std;

#define MAXSIZE 50
typedef int KeyType;

typedef  struct
{
   
	KeyType  key;
} ElemType;

typedef  struct
{
   
	ElemType* R;
	int  length;
} SSTable;

void  Create(SSTable& T)
{
   
	int i;
	T.R = new ElemType[MAXSIZE + 1];
	cin >> T.length;
	for (i = 1; i <= T.length; i++)
		cin >> T.R[i].key;
}

int  Search_Bin(SSTable T, KeyType k);

int main()
{
   
	SSTable T;  KeyType k;
	Create(T);
	cin >> k;
	int pos = Search_Bin(T, k);
	if (pos == 0) cout << "NOT FOUND" << endl;
	else cout << pos << endl;
	return 0;
}

int  Search_Bin(SSTable T, KeyType k) {
   
	
	int low = 1;
	int high = T.length;
	int mid;
	while (low<=high) {
   
		mid = (low + high) / 2;
		if (T.R[mid].key == k)
			return mid;
		else if (T.R[mid].key > k) 
			high = mid - 1;
		else 
			low = mid + 1;
	}
	return 0;
}

Java版

public class Main{
   

	private static final int MAXN = 50;
	
	public static void main(String[] args) {
   
		int length=0,k=0;
		int [] T = new int[MAXN];
		Scanner scanner = new Scanner(System.in);
		if(scanner.hasNext()) {
   
			length = scanner.nextInt();
			for (int i = 1; i <= length; i++) {
   
				T[i] = scanner.nextInt();
			}
			k = scanner.nextInt();
		}
		scanner.close();
		
		int binarySearch = Arrays.binarySearch(T, 1, length+1,  k);
		if(binarySearch>0)
			System.out.println(binarySearch);
		else 
			System.out.println("NOT FOUND");
	}

}


创作不易,喜欢的话加个关注点个赞,谢谢谢谢谢谢!

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 17:28
25届每天都在焦虑找工作的事情0offer情绪一直很低落硬撑着面了一个岗位岗位有应酬的成分面试的时候hr给我出各种场景题问的问题比较犀利&nbsp;有点压力面的感觉感觉有点回答不上来本来就压抑的情绪瞬间爆发了呢一瞬间特别想哭觉得自己特别没用没绷住掉眼泪了事后想想觉得自己挺有病的&nbsp;真的破大防了
喜欢唱跳rap小刺猬...:我觉得没关系吧,之前有一次面试leader给我压力面,我顶住了压力,结果入职的时候发现组里氛围很差,果断跑路。其实从面试就能大概看出组的情况,面试体验好的组倒是不一定好,但是面试体验不好的组。。。就很难说
面试尴尬现场
点赞 评论 收藏
分享
05-26 22:25
门头沟学院 Java
Java小肖:不会是想叫你过去把你打一顿吧,哈哈哈
点赞 评论 收藏
分享
看到这个内容真是闹麻了。。。。。。现在有了AI以后很多人面试都会作弊吗?&nbsp;那对老老实实面试的人岂不是不公平....
程序员牛肉:公平那是对小孩子讲的童话故事,成年人的世界只有能不能接受失败的后果。 你要是能接受面试作弊被发现之后多家公司联合永久拉黑的后果,你就搞。
你找工作的时候用AI吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务