折半查找

简介:
一、概念
     折半查找(Binary Search)的查找过程是:先确定待查找记录所在的范围区间,然后逐步 缩小范围直到找到或找不到记录为止。该方法的局限性在于要排序的查找表必须有序,即
     如若i<j 那么a(i)<=a(j);
二、C语言编程实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
       //
//  main.c
//  BinarySearchDemo
//
//  Created by zhanggui on 15/7/19.
//  Copyright (c) 2015年 zhanggui. All rights reserved.
//
 
#include <stdio.h>
#include <time.h>
#define N 20
int  BinarySearch( int  a[],  int  n, int  found)
{
     int  low = 0;
     int  high = n-1;
     int  mid;
//    time_t startTime,endTime;   //用于计算运行时间
//    startTime = clock();
     while  (low <= high) {
         mid = (low+high)/2;
         if  (found==a[mid]) {
             printf ( "-------------------\n" );
//            endTime = clock();
//            double Total_Waste_Time = (double)(endTime-startTime)/CLOCKS_PER_SEC;
//            printf("花费时间为:%f",Total_Waste_Time);
             return  mid;
         } else  if  (found<a[mid])
         {
             high = mid - 1;
         } else  {
             low = mid+1;
         }
     }
//    endTime = clock();
//    double Total_Waste_Time = (double)(endTime-startTime)/CLOCKS_PER_SEC;
//    printf("花费时间为:%f",Total_Waste_Time);
     return  -1;
    
}
 
int  main( int  argc,  const  char  * argv[]) {
     int  found;
     int  a[N] = {3,4,5,6,7,8,9,10,14,15,18,20,31,43,56,67,84,90,92,96};
     printf ( "请输入一个数:" );
     scanf ( "%d" ,&found);
     int  i = BinarySearch(a, N, found);
     if  (i != -1) {
         printf ( "在数组中的位置是%d\n" ,i);
     } else
     {
         printf ( "没有找到" );
     }
     return  0;
}
相关文章
|
存储 算法
【查找算法】折半查找法
【查找算法】折半查找法
|
8月前
|
存储 算法
03 折半查找
  折半查找又称为二分查找。它仅适用于有序的顺序表。   折半查找的基本思想:首先给定值 key 与表中中间位置的元素比较,若相等,则查找成功,返回该元素的存储位置;若不等,则所需查找的元素只能在中间元素以外的前半部分或后半部分(例如,在查找表升序排列时,若给定值 key 大于中间元素,则所查找的元素只可能在后半部分)。然后在缩小的范围内继续进行同样的查找,如此重复,知道找到位置,或确定表中没有所需要查找的元素,则查找不成功,返回查找失败的信息。  
53 0
二分法查找(折半查找)
二分法查找(折半查找)
89 0
|
机器学习/深度学习 存储 算法
折半查找算法
我们常常需要对数据进行查找,修改,查找数据有许多方法,我们先看看最简单的顺序查找
|
机器学习/深度学习 存储 人工智能
“二分“==“二分查找“ ?“yes“:“no“;
“二分“==“二分查找“ ?“yes“:“no“;
134 0
|
存储 算法
6-2 二分查找
6-2 二分查找
191 0
|
机器学习/深度学习
二分查找及其变式
二分查找及其变式
126 0
|
算法
04查找算法:顺序查找法、二分查找法
04查找算法:顺序查找法、二分查找法
150 0
04查找算法:顺序查找法、二分查找法