Day14-技术面试问题及答案整理(编程篇)
以下内容会持续更新:
1、排序
1)选择排序
选择排序算法的思想主要是这样的,首先第一次从整个序列中选择最小的数,然后放到第一位。然后,再从第二位到最后一位也选择出最小的一个数,把这个数放到第二位。然后再从第三位到最后一位选择出最小的数放到第三位,这样一直排下去,直到最后一位。这样就可以形成一个有序数列。Python代码如下:
2)冒泡排序
冒泡排序的基本思想:临近的数字两两进行比较,按照从小到大的顺序进行交换,这样一趟过去后,最大的数字被交换到了最后一位。然后再从头开始进行两两比较和交换,直到倒数第二位时结束,以此类推。如果有i个数字,则需要比较i-1趟(最后1个数字无需比较)。其中第j趟,已有j个数字比较完成交换到后面,则前面的数字只需要比较i-j-1次。Python代码如下:
2、去重
1)使用python自带的set
2)遍历搜索去重添加
创建一个新列表,遍历旧的列表,先把第一个元素放进新列表中,然后判断剩下的每一个元素在新列表中是否存在,不存在就放进去。
3、搜索
1)index方法
2)二分查找法:
只适用于排序后的列表。比如我们要从[1, 2, 3, 6, 7, 23, 79, 91]列表中查找79这个数字的具体位置,取列表中最中间的数字6与79比较,如果中间这个数比79小,说明79在右边,如果中间这个数比79大,说明79在左边,此列79在右边。然后再把中间到最后的这部分列表进行二分查找,依此做下去,最终找出79的位置。
4、列表翻转
1)使用python自带方法,如reverse()、负的list索引等
2)把数组的第一个元素与最后一个元素互换,第二个和倒数第二个互换......一直到最中间的两个或一个元素。这样就完成了列表反转。
5、交换两个值,不用临时变量
1)使用python的方法
2)使用异或运算