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

134 阅读1分钟

之前都是那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