zoukankan      html  css  js  c++  java
  • 二分法查找

    二分法是一个快速查找的简单算法,当然它要求查找的数组是有序的,看起来好像比暴力要麻烦一些,但是即便加上排序,logn+logn也要比n小,因此在即便加上排序,也要比暴力的时间效率高很多(小白见解,不对请指正,不胜感激),例题代码如下:

     1 #include "stdafx.h"
     2 #include<cstdlib>
     3 #include <iostream>
     4 #include <algorithm>
     5 //首先明白原理和能写出来还是有很多差距的,其次对于C输入数组,数组作为参数传递,指针的应用等等都还需要慢慢去理解...
     6 int DichotomySearch(int Array[],int k,int n)
     7 {
     8     int min = 1,max =n;
     9     int mid;
    10     //二分查找核心代码
    11     while(min <= max)
    12     {
    13         mid = (min + max) / 2;
    14         if(k < Array[mid])
    15         {
    16             max = mid - 1;
    17         }
    18         else if(k > Array[mid])
    19         {
    20             min = mid + 1;
    21         }
    22         else
    23         {
    24             return 1;
    25         }
    26     }
    27     return 0;
    28 }
    29 int _tmain(int argc, _TCHAR* argv[])
    30 {
    31     int Array[40000];
    32     int k;
    33     int n;
    34     printf("请输入将要输入有序数组的长度:");
    35     scanf("%d",&n);
    36     printf("请输入一个有序数组:");
    37     for(int i = 1; i <= n; i++)//当输入长度不确定时可以用EOF
    38     {
    39         scanf("%d",&Array[i]);
    40     }
    41     printf("请输入一个数字:");
    42     scanf("%d",&k);
    43     //必须是有序数组
    44     if(DichotomySearch(Array,k,n))
    45         printf("%d在数组中出现过",k);
    46     else
    47         printf("%d在数组中未出现",k);
    48     system("pause");
    49     return 0;
    50 }
  • 相关阅读:
    被隐藏的文件更改为可见
    Selenium WebDriver多层表单切换
    for循环
    Java课程设计二次大作业
    Java-DAO模式代码阅读及应用
    编辑器、编译器、文件、IDE等常见概念辨析
    树、二叉树和查找等知识点的总结
    二叉树的实现
    二叉树顺序结构和链式结构的相互转换
    使用k-近邻算法改进约会网站的配对效果
  • 原文地址:https://www.cnblogs.com/baikequanshu/p/3390775.html
Copyright © 2011-2022 走看看