zoukankan      html  css  js  c++  java
  • 想到什么写什么。。。

    1.90%人不能正确写出的二分查找

     1 int binarySearch(int a[],int n,int key)
     2 {
     3     int left=0;
     4     int right=n-1;
     5     while(left<=right)//易错点:一定要是小于等于
     6     {
     7         int mid=left+((right-left)>>1);//1。防止溢出,当l,r很大时,(l+r)>>1可能溢出,2.位运算加快速度  3.一定要加括号,>>优先级小于+   艹,你妹啊
     8         if(a[mid]>key)
     9             right=mid-1;
    10         else if(a[mid]<key)
    11             left=mid+1;
    12         else                           //相等的情况必然小,放在后面,不用每次                      先比较是否相当。。。
    13             return mid;
    14     }
    15     return -1;
    16 }

    2.O(n)效率排序

      (1)。重新排列使负数在正前面 重新排列使负数在正前面(类似这种的,粗略排序)

     1 void sort(int a[],int n)
     2 {
     3     int l=0;
     4     int r=n-1;
     5     while(l<r)
     6     {
     7         while(r>l&&a[l]<0) l++;
     8         while(r>l&&a[r]>0) r--;
     9         swap(a[l],a[r]);
    10     }
    11 }

      (2)。全部数据都在一定范围内的排序,可以达到O(n);

     比如:排序0---999之间的数,拿5000000个数据实验:(快排的时间是80ms,而hash的方法是5ms)

    int f(int a[],int n)
    {
        int h[1000]={0};
        
        for(int i=0;i<n;i++)
        h[a[i]]++;
        
        int t=0;
        for(int i=0;i<1000;i++)//重排
        while((h[i]--)!=0)
        a[t++]=i;
    }

    3.字符串的问题,常用的几种方法:1。hash_table  2。素数方法 3。KMP  4.字典树及后缀树         (核心思想就是用空间换时间)!

  • 相关阅读:
    屯【水】题计划
    【BZOJ2157】旅游
    【BZOJ2143】飞飞侠
    【BZOJ1036】[ZJOI2008]树的统计Count
    flask基础
    数据分析之Matplotlib
    pycharm 快捷键
    数据分析之pandas02
    数据分析之pandas01
    隐匿函数,二分法 冒泡排序
  • 原文地址:https://www.cnblogs.com/shuguang/p/2876279.html
Copyright © 2011-2022 走看看