![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
经典算法
JayMining
致力于计算机方面的研究
展开
-
常见排序算法之快速排序
快速排序是一种分区交换排序,是目前已知实测最快的一种排序算法.6.快速排序算法思想 快速排序的基本思想是,通过一趟划分将数组或线性表划为左部,右部,和基准值.其中左部都比基准值小,右部都比基准值大. (1)在数组中选择一个枢纽元key,一般情况下选取第一个数据(2)将所有比key值小的数据移到key值左边,将大于key值的数据移到key值右边.(3)将左部和右部分别递归重复第二步,直到所有元素排原创 2017-07-20 16:35:30 · 1027 阅读 · 0 评论 -
常见排序算法之归并排序
归并排序运用的是一种分而治之的思想,首先将线性表或数组,分为两个有序线性表或数组,再将其合并,因此合并算法是归并排序的基础.5.归并排序算法思想 (1)归并排序首先将待排序数组或线性表分为两个有序数组或线性表(2)将两个数组或线性表合并成一个有序数组或线性表.示意图:代码演示/** * @param array * 归并排序 */ public static原创 2017-07-20 16:09:26 · 976 阅读 · 0 评论 -
常见排序算法之冒泡排序
冒泡排序与选择排序一样是一种十分基础的排序算法,也是一种交换排序.4.冒泡排序:算法思想: (1)依然将线性表看成两部分有序表与无序表,开始是,整个线性表为无序表. (2)第一趟排序,从第一个元素开始,到最后一个元素,相邻元素依次两两比较,前一个元素比较大则两两交换.一趟排序以后,最大的元素,像冒泡一样,已经排到了线性表的最后一个元素. (3)经过n-1次选择过程,将得到一个有序线性表示意图代原创 2017-07-20 15:51:57 · 709 阅读 · 0 评论 -
常见排序算法之选择排序
选择排序是一种非常基础的排序算法.其算法思想仍然是将线性表看成有序和无序两个部分.因为其中运用到交换步骤,因此选择排序是一种交换排序.选择排序算法思想: (1)开始时整个线性表为无序表,有序表为空.(2)将无序表的第一个元素A[0]与其后的每个元素A[i] (i=1,2,3…n)作比较, 若A[0]较大,将A[i]交换.最后得到的第一个元素将是整个线性表中最小的元素.这样有序表元素+1,无序表元素原创 2017-07-20 15:37:51 · 876 阅读 · 0 评论 -
常见排序算法之希尔排序
希尔排序实质上是一种插入排序,也称为缩小增量排序,是直接插入排序的一种改进算法.2.希尔排序算法思想: 基于直接插入排序思想,直接插入排序的增量是1,也就是说比较大小时只能和当前元素的下一个元素比较,希尔排序的增量d是由大到小依次递减,在进行插入比较时,当前元素需要和相隔d个距离的元素进行比较. 假定待排序数组AA,长度nn(1)先选取一个增量d1<nd_1<n,把所有相隔d1d_1的元素归为一原创 2017-07-20 15:11:11 · 1289 阅读 · 1 评论 -
常见排序算法之插入排序
排序算法是程序员必备知识之一,今天有时间总结了一下常见的几种排序算法:插入排序,希尔排序,冒泡排序,选择排序,归并排序,快速排序。1.插入排序:算法思想: (1)直接插入排序思想比较简单,将有序表A分为两部分,一部分为有序部分O,另一部分待排序部分D,有序部分开始只有一个元素开始A[0]. (2)从待排序部分O中取出第一个元素A[i] (i=1,2,3…A.length-1)与有序部分原创 2017-07-20 14:38:39 · 683 阅读 · 0 评论 -
从最大子数组和问题详尽贪心算法策略
问题:给定数组a[1,2..n]a[1,2..n],求最大子数组和,即找出1≤i≤j≤n1\leq i\leq j \leq n 使得a[i]+a[i]+..+a[j] a[i]+a[i]+..+a[j] 值最大。有三种方法可以解决上述问题: 第一种 :暴力枚举法,其时间复杂度为 O(n3) O(n ^3) 第二种 :优化枚举法,其时间复杂度为 O(n2) O(n ^2) 第三种 :贪心方法,原创 2017-12-04 22:18:23 · 3813 阅读 · 1 评论