排序
qq_40955824
努力,加油。☀️
展开
-
排序----希尔排序及其优化(java)
希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,希尔排序是直接插入排序的优化。也称为缩小增量排序。 它把要排序的数组分成几个小数组同时进行直接插入排序。 将整个排序的数组分割成做干个子序列分别进行直接插入排序,待每个子序列都有序时,在对全体记录进行直接插入排序。 原理: 将待排序的数组...原创 2019-04-30 20:44:46 · 758 阅读 · 0 评论 -
排序-----选择排序及其优化(java)
原理:比较+交换 选择排序就是冒泡排序的优化。选择排序就是在每一趟的排序中选择一个最大的数放在最后或者选择最小的数放在最前边。选择排序两个交换的数当中至少有一个数可以 交换到最终的位置上。直到所有的元素都排序完,排序结束。 算法描述:(以升序为例) 1)如果是一个有n个数的序列,一共有n-1次排序。 2)在每第一趟中挑选最大的数放到最后,即先假设当前数为最大的数,然后一次和后边的数进行比较...原创 2019-04-29 14:53:03 · 615 阅读 · 2 评论 -
排序-----冒泡排序及其优化(java)
原理:冒泡排序可就是通过冒泡泡的方式,每一趟把最大的数字通过冒泡泡的方式放到最后。也就是如果有n个数字,一趟排序完成后,最大的数字就在最后,那么接下来就只用对前边的n-1项数字进行排序 算法描述: 1)如果有n个数要进行排序,那么只需要进行n-1趟排序 2)第一趟排序:通过相邻数字进行两两比较,如果前一个数比后一个数大,就进行交换。这一趟排序完成后,最大的数就在最后一位,接下来只需要对他的前...原创 2019-04-27 18:05:00 · 175 阅读 · 0 评论 -
排序-----直接插入排序及其优化(java)
算法思想: 直接插入排序是将整个数组分为有序数组和无序数组,有序数组是由比较过的元素组成的,而无序数组就是还没有进行比较的元素组成的。插入排序通过构建有序序列,对于没有排序元素,在已排序序列中从后向前扫描,找到相应位置并插入 ,重复该操作,直到最后一个元素排序完成。到此完成序列排序。 算法分析: 1)从序列的第一个元素开始,但是第一个元素默认已经被排序 2)取出下一个元素,设它为...原创 2019-04-26 17:11:30 · 625 阅读 · 0 评论 -
排序-------归并排序(java)
概念 :归并算法是将两个或者两个以上的 有序列表 合并成一个新的有序列表,即把待排序列分为若干个子序列,每个子序列都是有序的,然后把子序列合并成整体有序列表。若将两个有序表合并成一个有序表,称为二路归并。 算法思想:归并排序(mergeSort)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求...原创 2019-05-10 20:28:05 · 173 阅读 · 0 评论 -
排序--------快速排序及其优化(Java)
算法思路: 从待排元素中选取任意一个元素,把它当做分区点(基准值),在遍历的时候比基准值小的放在他的左边,比基准值大的放在右边。在一次遍历结束后,基准元素在最终位置 稳定行:不稳定算法, 扩展问题:如何在O(n)的适建范围内找到一个无需数组的k大元素 方法一:递归方法 优化 1..当排序的集合几乎接近有序时,由于默认选择的第一个元素作为基准值,会导致基准值划分的两个子树组严...原创 2019-05-13 21:06:40 · 251 阅读 · 0 评论