#数据结构与算法学习笔记#PTA1:二分查找算法(CC++)

xiaoxiao2021-02-28  46

2018.3.14

L是用户传入的一个线性表,其中ElementType元素可以通过>、 == 、<进行比较, 并且题目保证传入的数据是递增有序的。函数BinarySearch要查找X在Data中的位置, 即数组下标(注意:元素从下标1开始存储)。找到则返回下标,否则返回一个特殊的失败标记NotFound。

// BinarySearch.cpp: 定义控制台应用程序的入口点。 //二分查找算法 //2018.3.14 //L是用户传入的一个线性表,其中ElementType元素可以通过>、 == 、<进行比较, //并且题目保证传入的数据是递增有序的。函数BinarySearch要查找X在Data中的位置, //即数组下标(注意:元素从下标1开始存储)。找到则返回下标,否则返回一个特殊的失败标记NotFound。 #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #define MAXSIZE 10 #define NotFound 0 typedef int ElementType; typedef int Position; typedef struct LNode *List; struct LNode { ElementType Data[MAXSIZE]; Position Last; /* 保存线性表中最后一个元素的位置 */ }; List ReadInput(); /* 裁判实现,细节不表。元素从下标1开始存储 */ Position BinarySearch(List L, ElementType X); int main() { List L; ElementType X; Position P; L = ReadInput(); scanf("%d", &X); P = BinarySearch(L, X); printf("%d\n", P); return 0; return 0; } Position BinarySearch(List L, ElementType X) { int low = 1; int high = L->Last; int pos; while (low<=high) { pos = (low + high) / 2; if (L->Data[pos] == X)return pos; else if (L->Data[pos] < X) { low = pos + 1; } else if (L->Data[pos] > X) { high = pos - 1; } } return NotFound; }

#Coding一小时,Copying一秒钟。留个言点个赞呗,谢谢你#

转载请注明原文地址: https://www.6miu.com/read-2628347.html

最新回复(0)