简单小结几个常见算法的大体实现思想

前言,

今天(忍住)笔试一题,前面基础题没意思,所以只做了最后一题:输入A,B两字符串,比较排序后是否相等。

想了几种,最后选择先建二叉查找树,再中序查找得有序字符,后循环比较方式。(主要能更好体现数据结构+算法,还有OO)

N年没有笔试了,想起一些还记的算法小结下。

PS,后来面试官水平很一般,哎~,招研发主管,居然这样,又被忽悠了,浪费阿拉时间!下次要笔试还是不尿它。。。

排序

1.冒泡:从低往上选择临近比较排序;

2.插入:在剩下要排序数据中,选一个插入已排好序的队列中的适合位置;

3.选择:在剩下要排序数据中,选个最值(最大或最小)插入已排好序的队列中末端(头或尾);

4.快速:选择一参照值,从右左两边不断各自向对方移动(下标+-1)、与查找值比大小,后交换值,不停递归致排完序;

5.合并:先拆成有序,再比较合并;

6.堆排序:先建堆(上大于下),后n-1次删除最值;

查找

1.蛮力:顺序查找;

2.折半:先排序,不断选一半查询;

3.二叉树:建树查找;

4.哈希表:先建键值对表(即y=ax+b),后由键差值;

5.图查找:广度深度查找(不大记得,好像是建树还是矩阵方式。。) 

再说优缺点,减变分大法就N复杂了,要翻资料、要体会的、没必要,算法讲究思路方式、多说无益。

无论是C、OC、C#、JAVA等那种语言的编写实现只是把伪代码思想用编码的表现而已。。。

据说,好像Google最强的PR查找算法就是根据有向图的矩阵方式,可惜自己高数&线代等都不咋的~

若转载,请注明@jiyilee.cnblogs.com 珍惜生活,努力工作!!!
原文地址:https://www.cnblogs.com/jiyilee/p/4898164.html