要点总结

一、冒泡排序

原理:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

要点:

  1. 两个循环嵌套,第一个循环控制比较轮次,第二个循环控制每轮比较次数
  2. 如果前一个元素大于后一个元素,交换位置

 <-----------------------------------------------------------我是分割线----------------------------------------------------------->

二、二分查找

原理:

  1. 有序列表中,二分查找从中间项开始
  2. 如果该项是我们目标项,则完成查找
  3. 如果目标项大于中间项,则可以消除中间项及比中间项目小的那一部分
  4. 反之,消除中间项目及比中间项目比较大的那一部分,之后再次重复上面过程

要点:

  1. 先记录起始位置和末尾位置
  2. 循环条件为 末尾位置>起始位置
  3. 计算当前条件下的中间位置
  4. 进行比较,判断下一次判断的区间
  5. 最终返回的是middle

递归方式实现:

要点:

  1. 没有循环
  2. 标记中间位置坐标
  3. 进行判断,分支条件返回递归函数

 <-----------------------------------------------------------我是分割线----------------------------------------------------------->

三、单链表反转

链表定义:

    链表是一种递归的数据结构,它或者为空(null),或者是指向一个节点(node)的引用,

    该节点含有一个泛型的元素和一个指向另一条链表的作用。 

 单链表反转示意图:

1.next = node.next

2.node.next = prev

3.prev = node

4. node = next

 

单链表反转递归表示:

  1. 递归的终止条件是该节点没有下一节点

  2. 设置temp节点,记录为head.next

  3. 进行递归操作

  4.temp节点的下一节点为head

  5. head断开下一节点的连接信息

 

<-----------------------------------------------------------我是分割线----------------------------------------------------------->

 

四、插入排序

定义:

初始时假设第一个记录自成一个有序序列,其余记录为无序序列。接着从第二个记录开
始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直至最后一个记
录插入到有序序列中为止
 
<-----------------------------------------------------------我是分割线----------------------------------------------------------->
 
五、选择排序
定义:
对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将该记录与第一个记录的
位置进行交换;接着对不包括第一个记录以外的其他记录进行第二轮比较,得到最小的记
录并与第二个记录进行位置交换;重复该过程,直到进行比较的记录只有一个时为止。
 
要点:
1. 嵌套循环,第一次循环控制比较轮次,第二次循环控制每轮比较
2. 每轮比较都要与最小的记录不停的比较
3. 比较结束后与每轮开始的记录交换位置
 
<-----------------------------------------------------------我是分割线----------------------------------------------------------->

 六、快速排序

定义:

基于分治的思想,是冒泡排序的改进型。首先在数组中选择一个基准点(该基准点的
选取可能影响快速排序的效率,后面讲解选取的方法),然后分别从数组的两端扫描
数组,设两个指示标志(lo 指向起始位置,hi 指向末尾),首先从后半部分开始,如果
发现有元素比该基准点的值小,就交换 lo 和 hi 位置的值,然后从前半部分开始扫秒,
发现有元素大于基准点的值,就交换 lo 和 hi 位置的值,如此往复循环,直到 lo>=hi,然
后把基准点的值放到 hi 这个位置。一次排序就完成了。以后采用递归的方式分别对前
半部分和后半部分排序,当前半部分和后半部分均有序时该数组就自然有序了。
 
 
posted @ 2019-07-06 15:20  溜肉段小能手  阅读(144)  评论(0编辑  收藏  举报