美文网首页
第五章 搜索与排序

第五章 搜索与排序

作者: 随风飘扬的小哥哥 | 来源:发表于2018-02-08 08:47 被阅读0次

    知识点:

    1. 线性搜索。

    Python自带函数 in, 线性搜索,及遍历一遍输入数组,直到找到特定所需元素。最糟情况复杂度O(n)。

    排序过的序列搜索,Listing 5.2,复杂度没有变化,多加入一步判断。

    寻找最小值,复杂度也一样。

    2. 二分查找

    分治思想。排序后的线性搜索虽然会轻微的提升算法复杂度,但效果不明显。 复杂点在于首先得对序列排序后才能进行二分查找。

    复杂度为O(logn),如4.12节讲,每次输入如果是减半的话,复杂度为log。

    3. 冒泡排序 

    Python内置sort(),但使用范围很窄。每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序。仅仅比较相邻两个元素,若后一个大于前一个就互换,第一轮必定会把最大的放到最后,之后每轮比较的元素个数递减1。每一次外循环总会把当前序列中的最大值放到当前序列的最后。复杂度为O(n平方)。由于循环的嵌套和交换,效率低下。考虑若序列已经排序,则任然需要一样的复杂度,因为方法不知道已经排序了的。

    书中方法没有利用到pythonic

    4. 选择排序

    每次找到未排序中最小的(最大的也行)元素的位置,找到后与该位置与未排序序列的第一个元素交换值,直到该序列成为有序序列。初始状态整个序列为无序序列,每次交换都使有序序列的长度加一,无序序列的起始位置后移一位。选择排序的平均时间复杂度为O(n^2)。

    5. 插入排序

    每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。

    相关文章

      网友评论

          本文标题:第五章 搜索与排序

          本文链接:https://www.haomeiwen.com/subject/airozxtx.html