摘要: 1. 归并排序 算法核心思想 归并排序使用了二分法,归根到底的思想还是分而治之。拿到一个长数组,将其不停的分为左边和右边两份,然后以此递归分下去。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序是一种稳定的排序 阅读全文
posted @ 2019-12-09 21:00 何发奋 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 1. 基数排序 算法核心思想 基数排序(radix sort)是一种只适用于数字或字母类型的排序方法,它检查数字或字母的每一位,将之分类,按照位数的特定顺序,来将元素排列。以数字为例,将所有元素按照个位数字分类,分类好后,将个位数字大小排列组合起来,再按照十位数字分类,再按照数字大小排列组合起来,一 阅读全文
posted @ 2019-12-09 20:58 何发奋 阅读(475) 评论(0) 推荐(0) 编辑
摘要: 1. 快速排序 算法核心思想 取待排序数组第一个数作为参照数,建立left和right数组left存储小于参照数的数组集合,right存储大于参照数的数组集合,然后分别对left和right进行递归调用排序。具体算法逻辑如下: 先从数列中取出一个数作为基准数。 分区过程,将比这个数大的数全放到它的右 阅读全文
posted @ 2019-12-09 20:56 何发奋 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 1. 冒泡排序 算法核心思想 在数组arr[n]中,从第一个数开始,拿arr[i]和后面的数arr[i+1]进行比较,如果arr[i]比后面的大,就交换两个数的位置,这样遍历一遍数组后,把最大的数据排在了最后面,之后继续循环排剩下的n-1个数,直到完成所有的排序,由于每次都是把最大的排到最后面,就好 阅读全文
posted @ 2019-12-09 20:55 何发奋 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 1. 堆排序 算法核心思想 堆排序利用堆的特点, 最大堆要求节点的元素都要不小于其孩子,最小堆要求节点元素都不大于其左右孩子,那么处于最大堆的根节点的元素一定是这个堆中的最大值,每次把堆顶元素放置在二叉树的尾部,然后重新建堆这样循环处理,最终就能完成排序。 核心算法逻辑如下: 建堆 把堆顶的元素和最 阅读全文
posted @ 2019-12-09 20:54 何发奋 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 1. 选择排序 算法核心思想 选择排序的算法核心思想是从数组中选择最小的元素,放到第一个位置,再从数组中选择第二小的元素放到第二个位置,一直到数组的最后一个元素为止。具体逻辑如下: 选择数组的第一小的元素,将其放在第一个位置 选择数组的第二小的元素,将其放在第二个位置 。。。 选择数组的第三小的元素 阅读全文
posted @ 2019-12-09 20:52 何发奋 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 1. 希尔排序 算法核心思想 希尔排序本质也是一种插入排序,但是是根据简单插入排序进行优化后的一种更加高效的版本,别称缩小增量排序。希尔排序的核心思想是将排序数组按照步长进行分组,然后对分组的元素进行直接插入排序,循环缩小分组步长,最后当步长长度为1的时候排序结束。希尔排序在数组中采用的是跳跃式分组 阅读全文
posted @ 2019-12-09 20:51 何发奋 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 1. 插入排序 算法核心思想 插入排序的核心思想是将数组中所有的元素分别和前面已经排序好的元素相比较,如果后面选择的元素比已排序的元素小,则交换位置,直至比较完成。具体逻辑如下: 取数组的第一个元素为已经排序好的元素,将第一个元素看作有序序列 取数组的第二个元素和已经排序号的元素进行比较,如果第二个 阅读全文
posted @ 2019-12-09 20:48 何发奋 阅读(248) 评论(0) 推荐(0) 编辑