第十四章:算法分析:html
一、什么是归并排序?
并排序(MERGE-SORT)是创建在归并操做上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个很是典型的应用。将已有序的子序列合并,获得彻底有序的序列;即先使每一个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序是一种稳定的排序方法。java
二、顺序查找:顺序查找是按照序列原有顺序对数组进行遍历比较查询的基本查找算法。git
三、二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。可是,折半查找要求线性表必须采用顺序存储结构,并且表中元素按关键字有序排列。算法
四、哈希查找:哈希查找是经过计算数据元素的存储地址进行查找的一种方法。数组
五、插入排序:对于任意一个序列以及一个给定的元素,将给定元素与序列中元素依次比较,直到找出与给定关键字相同的元素,或者将序列中的元素与其都比较完为止。数据结构
六、折半插入排序:折半插入排序(binary insertion sort)是对插入排序算法的一种改进,因为排序算法过程当中,就是不断的依次将元素插入前面已排好序的序列中。因为前半部分为已排好序的数列,这样咱们不用按顺序依次寻找插入点,能够采用折半查找的方法来加快寻找插入点的速度。ide
七、快速排序:经过一趟排序将要排序的数据分割成独立的两部分,其中一部分的全部数据都比另一部分的全部数据都要小,而后再按此方法对这两部分数据分别进行快速排序,整个排序过程能够递归进行,以此达到整个数据变成有序序列。学习
问题1:老师在课上说选择排序不是一种稳定的算法,我很疑惑为何。设计
问题1解决方案:后来,我仔细想了一下选择排序是给每一个位置选择当前元素最小的,好比给第一个位置选择最小的,在剩余元素里面给第二个元素选择第二小的,依次类推,直到第n - 1个元素,第n个元素不用选择了,由于只剩下它一个最大的元素了。那么,在一趟选择,若是当前元素比一个元素小,而该小的元素又出如今一个和当前元素相等 的元素后面,那么交换后稳定性就被破坏了。比较拗口,举个例子,序列5 8 5 2 9,咱们知道第一遍选择第1个元素5会和2交换,那么原序列中2个5的相对先后顺序就被破坏了,因此选择排序不是一个稳定的排序算法。调试
问题1:设置哨兵在数组第一位到底有啥用
问题1解决方案: 在链表中的插入、删除操做,须要对插入第一个结点和删除最后一个结点进行特殊处理,
好比插入时判断head结点是否null,使用哨兵结点后能够最大限度减小这种判断。
本周无错题
代码练习较多,问题较为深邃(至少我看不懂)
基于评分标准我给本博客打分:16分。得分状况以下:
1.正确使用Markdown语法(加1分)
2.模板中的要素齐全(加1分)
3.教材学习中的问题和解决过程(加3分)
4.代码调试中的问题和解决过程(加4分)
5.其余加分(加7分)
6.进度条中记录学习时间与改进状况(1)
7.感想,体会不假大空(1)
8.有动手写新代码(1)
9.排版精美(1)
10.错题学习深刻(1)
11.点评认真,能指出博客和代码中的问题(1)
12.结对学习状况真实可信(1)
最近java水平感受有所提高,但仍是不太想写书上的代码。最近又要学安卓了,安卓确实有点难,一开始都没找到敲代码的位置,确实有点心态爆炸,但愿能在跟上的同时尽可能往前面撵一撵。
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 10000行 | 30篇 | 400小时 | |
第7周 | 808/5181 | 2/2 | 20/20 |