二分查找完整代码例子

简介: 二分查找完整代码例子
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 typedef int ElementType;
 5 
 6 typedef struct {
 7     int element[16];
 8     int length;
 9 }StaticTable;
10 
11 
12 //二分法查找
13 int BinarySearch(StaticTable* Tbl, ElementType K)
14 {//在表TB了中查找关键字为K的数据元素
15     int left, right, mid, NotFound = -1;
16     left = 1;                //初始左边界
17     right = Tbl->length;    //初始右边界
18     while (left <= right)
19     {
20         mid = (left + right) / 2;            //计算中间元素坐标
21         if (K < Tbl->element[mid]) right = mid - 1;        //调整有边界
22         else if (K > Tbl->element[mid]) left = mid + 1;    //调整做边界
23         else    return mid;        //查找成功,返回数据元素的下标
24     }
25     return NotFound;        //查找不成功,返回-1;
26 }
27 
28 
29 //顺序查找
30 int Index(StaticTable *Tbl, ElementType K)
31 {
32     int i ;
33     Tbl->element[0] = K;
34     for (i = Tbl->length; Tbl->element[i] != K; i--);
35     return i;
36 }
37 
38 
39 
40 int main()
41 {
42     StaticTable * Tb1 = (StaticTable*)malloc(sizeof(StaticTable));
43     Tb1->length = 15;
44     for (int i = 1; i < 16; i++)
45     {
46         Tb1->element[i] = i + 1;
47     }
48 
49     int index1 = BinarySearch(Tb1, 15);
50     printf("%d\n", index1);
51 
52     int index2 = Index(Tb1, 5);
53     printf("%d\n", index2);
54     return 0;
55 }


相关文章
|
5月前
|
搜索推荐 Java 索引
|
5月前
|
搜索推荐 Java 索引
|
8月前
一个简单二分查找的范例
一个简单二分查找的范例
31 0
链表翻转循环和递归写法(画图分析)
链表翻转循环和递归写法(画图分析)
36 0
力扣83删除排序链表中的重复元素:代码实现+思路分析+方法总结(快慢指针法&递归)
力扣83删除排序链表中的重复元素:代码实现+思路分析+方法总结(快慢指针法&递归)
68 0
|
算法
力扣704二分查找:思路分析+代码实现(递归与非递归)
力扣704二分查找:思路分析+代码实现(递归与非递归)
147 0
力扣82删除排序链表中的重复元素 II:思路分析+代码实现+方法总结(三指针法&快慢指针法【双指针】&递归法)
力扣82删除排序链表中的重复元素 II:思路分析+代码实现+方法总结(三指针法&快慢指针法【双指针】&递归法)
84 0
|
算法 搜索推荐 Java
排序:Java实现插入排序原理及代码注释详解
排序:Java实现插入排序原理及代码注释详解
145 0
|
搜索推荐 算法 Java
排序:Java实现选择排序原理及代码注释详解
排序:Java实现选择排序原理及代码注释详解
168 0

热门文章

最新文章