算法
sweird
知其然,并知其所以然。揭开上层重重迷雾,去了解计算机的本质,去了解操作系统的本质,解开曾经的迷惑,怀着十二分的热情,用我的一生去完成。
展开
-
经典算法---插入排序 insert-sort
时间复杂度:O(n2)O(n^2)O(n2) 在算法导论中“算法分析”一节就是以“插入排序”为例分析的,已经分析的很清楚了,最好情况下,即已经排好序的情况下,只有外层循环,所以时间复杂度为O(n)O(n)O(n),但是如果正好是逆序,那么时间复杂度为O(n2)O(n^2)O(n2) 思想: 取待排序的牌,和已排序的手牌(从左到右依次变大)里最右边的牌开始比较大小,如果最右边的牌比待排序的牌大,那么...原创 2019-06-06 10:26:32 · 1518 阅读 · 0 评论 -
算法的好坏是如何分析的?
前言 本节参考《算法导论》P13P_{13}P13~P16P_{16}P16, 以插入排序为例做说明分析算法的复杂度,给出了计算插入排序算法运行时间的表示方式和计算方法,并给出了插入排序最好情况、最坏情况、平均情况的分析过程,最后引出Θ\ThetaΘ(读任务theta)表示。掌握此方法后,就可以对遇到的任何算法做一个形式化的评估,从而了解算法的执行效率。 具体插入排序的算法的思想请见之前的博文...原创 2019-06-08 16:13:26 · 1471 阅读 · 0 评论 -
经典算法---选择排序 selection sort
选择排序 selection sort 时间复杂度O(n2)O(n^2)O(n2) 选择排序每一趟找出一个最小(或最大)数放到序列起始位置,然后再从剩余待排序元素中继续找到最小(或最大)数,放到已排序的序列的尾部,以此类推,直到全部待排序元素排完。 选择排序的思想和冒泡排序是类似的,但选择排序和冒泡排序是有区别的1: 冒泡排序比较的是相邻两个数,而选择排序是顺序比较,找到最小(或最大)数。 冒泡...原创 2019-06-09 16:43:28 · 322 阅读 · 0 评论 -
经典算法---冒泡排序 bubble-sort
时间复杂度:O(n2)O(n^2)O(n2) 思想: 从给定无序序列头部开始,两两比较,根据两者大小交换位置,直到将最大(或最小)的数据交换到队尾(将最大的放到最后即升序,将最小的放到最后即降序),从而成为有序序列的一部分 。下一次继续这个过程,直到所有数据元素都排好序 。 外层排序只要进行len−1len-1len−1就可以排好了,内层排序只要排len−1len-1len−1再减去已经排序好的i...原创 2019-06-04 17:24:56 · 1011 阅读 · 0 评论 -
如何判断计算机的快慢?
参考《算法导论》p6p_6p6~p7p_7p7。 为什么要学算法?就是想设计出的算法让计算机跑的更快嘛,那怎么判断计算机运行的快慢?或者不同算法在同一台计算机上的运行时间如何比较? 判断CPU运行快慢(CPU快慢也即计算机快慢)的一个单位是MIPS(Million Instruction Per Seconds),每秒百万条执行,此值肯定是越大则表示CPU运行越快。 另外一个评价标准是,某个算...原创 2019-06-04 17:05:09 · 1537 阅读 · 0 评论