数据结构 折半查找 swift的版本

之前都是那c 或 c++ 写, 用swift 写一下 。

  • 折半查找 限制 是必须是有序的数字, 每次 查找都减少一半。

            func BinarySearch(data:[Int],x:Int) -> (Int){
                  var min:Int
                  var beg:Int = 0
                  var size:Int = data.count
                  
                  while beg <= size {
                      min = (beg+size)/2//取中间值
                      
                      ///如果相等 返回
                      if x == data[min] {
                      
                          return min
                      }
                      
                      ///如果在前面,修改size的位置
                      if x < data[min]{
                          
                          size = min-1
                      ///如果在后面,beg 的位置
                      }else if x > data[min]{
                          
                          beg = min+1
                      
                      }
                      
                  }
                  
                  return -1
              }
    
              let a:[Int] = [1,2,3,4,5,6,7,8]
    
              let p = BinarySearch(a, x: 8)
    
              print(p)
    
  • C++语言 版本, 递归比迭代效率低。 就写迭代
    int BinarySearch(int data[],int x,int size){
    int mid;//中间值
    int beg = 0;//开始的值

     while (beg<=size) {
      
      mid = (beg+size)/2;
      
      if (x == data[mid])
          return mid;
      
      if (x < data[mid]){
          size = mid - 1;
    
      }else if (x > data[mid]){
          beg = mid + 1;
      }
    
      }
    
       ///没找到
      return -1;
    
     }
    
    
     int main() {
    
      int a[8] = {1,2,5,6,7,78,778,8888};
    
      int b = BinarySearch(a, 1, 8);
    
      std::cout<< b << std::endl;
    
      return 0;
    }
    

个人博客: www.liangtongzhuo.com

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,788评论 0 33
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 3,868评论 0 6
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,802评论 18 399
  • 回溯算法 回溯法:也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并...
    fredal阅读 13,782评论 0 89
  • 第2天·21天告别拖延 #玩卡不卡·每日一抽#每一位都可以通过这张卡片觉察自己: 1、直觉他叫什么名字?铁蛋 2、...
    af6f43297f9b阅读 185评论 0 0