• 几个面试常见算法


    1、选择排序

    基本思路:选择某个索引位置的元素,然后和后面元素依次比较,若大于则交换位置,经过第一轮比较排序后可得出最小值,然后使用同样的方法把剩下的元素逐个比较即可。

    static void selectSort(int[] arry){
      for(int times = 0; times <arry.length - 1; times ++){
        int minIndex = times;
        for(int i = times + 1; i < arry.length; i ++){
          if(arry[i] < arry[minIndex]){
            minIndex = i;
          }
        }
        swap(arry,times,minIndex); // 每一轮结束后才调换位置
      }
    }

    2、冒泡排序

    基本思路:对未排序的各元素从头到尾依次比较相邻的两个元素大小关系,若大于则交换位置,经过第一轮比较排序后可得出最大值,然后使用同样的方法把剩下的元素逐个比较即可。

    static void bubbleSort(int[] arry){
      int temp = 0;
      for(int j = 0; j < arry.length -1; j++){
        for(int i = 1; i < arry.length -j; i++){
             if(arry[i-1] > arry[i]){
            temp = arry[i-1];
                  arry[i-1] = arry[i];
                  arry[i] = temp;
               }
            }
        }
    }

    3、二分查找

    当数据量很大适宜采用该方法;采用二分法查找时,数据需是排好序的。为了更好的理解算法,下面用一个游戏来举例。

    猜数游戏: 一个朋友让你猜他正在想的一个从1到100之间的数,等你猜了,他会告诉你三种结果中的一个:你猜的比他想的大,或小,或猜中了。 为了能用最少的次数猜中,必须从50开始猜。如果他说你猜的小了,那么就能推出哪个数在50到100之间,所以马上猜75。但如果他说猜大了,你也能明白哪个说在1到50之间,所以马上猜25。如此重复,范围越来越小,直到猜到为止。

    static int binarySearch(int[] arry, int key){
      int low = 0;                        // 最低索引
      int high = arry.length;             // 最高索引
        while(low <= high){                 // 最低索引不能高于最高索引
          int mid = (low + high) >> 1;    // 中间索引
            if(arry[mid] < key)             // key值位于大值半区
              low = mid + 1;              // 将最低索引设置为中间索引+1
            else if(arry[mid] > key)        // key值位于小值半区
              high = mid - 1;             // 将最高索引设置为中间索引-1
            else
              return mid;
        }
        return -1;
    }
  • 相关阅读:
    POJ-1751 Highways---确定部分边的MST
    ZOJ-1586 QS Network---最小生成树Prim
    POJ-1861 Network---最小生成树
    ZOJ-1203 Swordfish---最小生成树
    POJ-3026 Borg Maze---BFS预处理+最小生成树
    POJ-1258 Agri-Net---MST裸题Prim
    Android异常与性能优化相关面试问题-ANR异常面试问题详解
    Android异常与性能优化相关面试问题-OOM异常面试问题详解
    热门前沿知识相关面试问题-android插件化面试问题讲解
    初始化对于类与接口的异同点深入解析
  • 原文地址:https://www.cnblogs.com/zoe15/p/5366224.html
Copyright © 2020-2023  润新知