摘要:
【快速排序】: 利用递归算法, 首先选择一个基准值(pivot value),这里我们选列表的第一个值作为例。这个基准值的作用是协助列表的分割。 这个基准值在正序列表中的正确位置,我们称之为分割点(split point)。这个点用于将列表分成两个部分,然后再对每个部分做快速排序。 分割过程如下: 阅读全文
posted @ 2018-01-21 13:30
JADE91
阅读(409)
评论(0)
推荐(0)
摘要:
【归并排序】这里我们利用递归算法不断地将列表一分为二,base case就是列表中没有元素或者只剩一个元素,因为此时这个子列表必然是正序的;然后再逐步把两个排序完成的子列表合并成一个新的正序列表,直到所有元素排序完毕。 【示意图】这是一个从下至上的过程(Bottom-Up) 将列表不断从中间分成两个 阅读全文
posted @ 2018-01-21 11:52
JADE91
阅读(347)
评论(0)
推荐(0)
摘要:
【希尔排序】:也叫做递减增量排序算法,在插入排序算法的基础上做了改进。 希尔排序最开始将列表按照一定的步长(即增量)分成多个子序列,多每个子序列进行插入排序; 然后减小步长,重新分割子序列,再对每个子序列进行插入排序; 重复上述步骤,直到步长为1,对整个列表进行插入排序,排序完成。 【示意图】 给定 阅读全文
posted @ 2018-01-21 11:10
JADE91
阅读(323)
评论(0)
推荐(0)
摘要:
【插入排序】:每次保证列表最左端子序列是排好顺序的,然后取下一个元素,扫描其左端的子序列,将其中大于目标元素的元素右移一个位置,直到找到合适的位置将目标元素插入子序列中。逐步增大排序完成的sublist的长度,最终完成整个列表的排序 算法思路如下: 1. 列表最左边第一个元素认为已经排序好了 2. 阅读全文
posted @ 2018-01-21 10:29
JADE91
阅读(267)
评论(0)
推荐(0)
摘要:
【选择排序】 选择排序是在冒泡排序(Bubble Sort)的基础上做了改进:每完成一次走访过程(pass)最多只需要交换一次。 每一次走访过程,寻找最大值,当此次走访结束时,将最大值交换到正确的位置; 接下来再在剩下的sublist中继续重复上述过程,直到完成n-1次走访(n为列表的长度); 此时 阅读全文
posted @ 2018-01-21 09:49
JADE91
阅读(352)
评论(0)
推荐(0)

浙公网安备 33010602011771号