算法
文章平均质量分 59
哀嚎的狗子
不悲叹过去,不荒废现在,不惧怕未来
展开
-
Java实现归并排序
7.10 归并排序7.10.1 归并排序介绍:归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。7.10.2 归并排序思想示意图 1-基本思想:7.10.3 归并排序思想示意图 2-合并相邻有序子序列:再来看看治阶段,我们需要将两...原创 2021-11-03 13:57:51 · 105 阅读 · 2 评论 -
Java实现快速排序
7.9 快速排序7.9.1快速排序法介绍:快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列7.9.2快速排序法示意图:7.9.3快速排序法应用实例:要求: 对 [-9,78,0,23,-567,70] 进行从小到大的排序,要求使用快速排序法。 ...原创 2021-11-03 13:53:18 · 113 阅读 · 0 评论 -
Java实现希尔排序
7.8 希尔排序7.8.1简单插入排序存在的问题我们看简单的插入排序可能存在的问题. 数组 arr = {2,3,4,5,6,1} 这时需要插入的数 1(最小), 这样的过程是: {2,3,4,5,6,6} {2,3,4,5,5,6} {2,3,4,4,5,6} {2,3,3,4,5,6} {2,2,3,4,5,6} {1,2,3,4,5,6} 结论: 当需要插入的数是较小的数时,后移的次数明显增多,对效率有影响.7.8.2希尔排序法介绍希尔排序是希尔(Don...原创 2021-10-28 15:19:16 · 87 阅读 · 0 评论 -
Java实现插入排序
7.7 插入排序7.7.1插入排序法介绍:插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。7.7.2插入排序法思想:插入排序(Insertion Sorting)的基本思想是:把n 个待排序的元素看成为一个有序表和一个无序表,开始时有 序表中只包含一个元素,无序表中包含有n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排 序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。7.7.3插入排序原创 2021-10-28 15:13:49 · 101 阅读 · 0 评论 -
Java实现选择排序
7.6.1基本介绍选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。7.6.2选择排序思想:选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从arr[0]~arr[n-1]中选取最小值, 与arr[0]交换,第二次从arr[1]~arr[n-1]中选取最小值,与arr[1]交换,第三次从arr[2]~arr[n-1]中选取最小值,与arr[2] 交换,...,第i 次从...原创 2021-10-21 17:09:31 · 1617 阅读 · 0 评论 -
Java实现冒泡排序
7.5.1基本介绍冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较 相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。优化:因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在 排序过程中设置一个标志flag 判断元素是否进行过交换。从而减少不必要的比较。(这里说的优化,可以在冒泡排 序写好后,在进行)...原创 2021-10-21 16:57:59 · 1652 阅读 · 0 评论 -
排序算法的介绍及其时间复杂度和空间复杂度分析
7.1 排序算法的介绍排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。7.2 排序的分类:1) 内部排序: 指将需要处理的所有数据都加载到内部存储器(内存)中进行排序。 2) 外部排序法: 数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序。 3) 常见的排序算法分类(见右图):7.3 算法的时间复杂度7.3.1度量一个程序(算法)执行时间的两种方法1) 事后统计的方法 这种方法可行, 但是有两个问题:一是要.原创 2021-10-20 15:39:07 · 3064 阅读 · 0 评论 -
程序员常用十大算法(上)
1、二分查找算法(非递归实现)1.1 二分查找算法(非递归)介绍 我们以前了解过二分查找算法,但是使用的是递归实现,下面我们了解二分查找算法的非递归实现 (注意) :二分查找算法只适用于有序的数列。对于无序数列,我们需要先进行排序。 二分查找算法1的运行时间为对数时间O(㏒₂n),即查找到目标位置最多只需要㏒₂n 步。 1.2 二分查找算法的非递归代码实现public class BinarySearchNoRecur { public static vo..原创 2021-09-24 11:22:54 · 7933 阅读 · 1 评论