zoukankan      html  css  js  c++  java
  • 几个面试常见算法

    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;
    }
  • 相关阅读:
    柔性数组
    2015阿里秋招当中一个算法题(经典)
    LAMP环境搭建
    JS和JQuery中的事件托付 学习笔记
    #17 Letter Combinations of a Phone Number
    码农生涯杂记_5
    【C++ Primer每日刷】之三 标准库 string 类型
    扎根本地连接未来 千米网的电商“红海”生存术
    poj 3356
    经验之谈—OAuth授权流程图
  • 原文地址:https://www.cnblogs.com/zoe15/p/5366224.html
Copyright © 2011-2022 走看看