
算法分析与设计
ITJAVA小李
学而不思则罔,思而不学则殆.
展开
-
算法学习笔记之希尔排序
一、概述希尔排序是插入排序的一种,又称“缩小增量排序”,是插入排序算法的一种更高效的改进版本。二、需求:排序前:{9,1,2,5,7,4,8,6,3,5}排序后:{1,2,3,4,5,5,6,7,8,9}三、排序原理1.选定一个增长量h,按照增长量h作为数据分组的依据,对数据进行分组;2.对分好的每一组数据完成插入排序;3.减少增长量,量小减为1,重复第二步操作。增长量h的确定:...原创 2020-02-14 16:20:20 · 213 阅读 · 1 评论 -
算法学习笔记之插入排序
一、插入排序插入排序是一种简单直观且稳定的排序算法。它的工作方式非常像人们排序一手扑克牌一样,开始时,我们的左手为空并且桌子上的牌面朝下。然后,我们每次从桌子上拿走一张牌并将它插入左手正确的位置,为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较。需求:排序前:{4,3,2,10,12,1,5,6}排序后:{1,2,3,4,5,6,10,12}排序原理:1.把所有的元...原创 2020-02-10 08:51:16 · 107 阅读 · 0 评论 -
算法学习笔记之冒泡排序
冒泡排序 冒泡排序基于交换思想的排序算法,它将相邻的两个元素加以比较,若左边元素值大于右边元素值,则将这两个元素交换;若左边元素值小于等于右边元素值,则这两个元素位置不变。右边元素继续和下一个元素进行比较,重复这个过程,直到比较后一个元素位置。 这里我们采用伪代码形式简单的表示冒泡排序过程: 假设待排序数组为A[1..n]。当排序结束,数组A中包含已排序的序列。for i <- 1...原创 2019-12-18 21:27:08 · 300 阅读 · 0 评论 -
算法学习笔记之递归
算法之递归递归是数学与计算机科学中的基本概念,程序设计语言中的递归程序可被简单定义为对自己的调用,递归程序不能总是自我调用,否则就会永不终止。因此,递归程序必须加上终止条件。 下面我们可以举一个利用递归的例子: 例:使用Java程序生成斐波那契序列。 分析: 无穷序列1,1,2,3,5,8,11,13,21,34 ... 可定义为斐波那契序列。 递归形式为: F (n) = 1, ...原创 2019-12-17 21:48:54 · 150 阅读 · 0 评论