您的位置:首页 > 编程语言 > Go语言

thinking in algorithm,O(n)到O(1)的实例(一)

2011-03-27 13:49 344 查看
  需求:验证用户权限

  O(n):

    参数:所有权限用户对象组,用户ID

    返回:true[有权限],false[没有权限]

    伪代码:

    function isPower(Power[] powers, int userId) {

      for each power in powers {

        if (userId == power.id)

          return true;

      }

      return false;

    }

  

  O(1):

    参数:所有权限用户ID组[经过了排序],用户ID

    返回:true[有权限],false[没有权限]

    伪代码:

    Arrays.sort(powerIds); //进行排序

    function isPower(int[] powerIds, int userId) {

      if (Arrays.binarySearch(powersIds, userId) > -1)

        return true;

      return false;

    }

  

  技巧:

    一、待查找的集合进行排序

    二、采用O(1)查找算法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息