数据结构和算法
常见的数据结构和算法
thwsir
这个作者很懒,什么都没留下…
展开
-
数据结构和算法 - 希尔排序
问题抛出 插入排序存在的问题 数组 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} 结论:当需要插入的数是较小的时候,后移次数明显增多,影响效率。 问题解决 希尔排序是希尔在1959年提出的一种排序算法。希尔排序是一种比简单插入排序更高效的插入排序,也称缩小增量排序 基本介绍 希尔排序是把数组按照增量分组原创 2020-07-31 11:19:53 · 477 阅读 · 0 评论 -
数据结构和算法 - 选择排序
基本介绍 首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 核心思想 找到序列最小值,然后放到已排序序列的末尾 时间复杂度 排序法 平均时间 最差情形 稳定度 额外空间 备注 选择 O(n2n^{2}n2) O(n2n^{2}n2) 不稳定 O(1) n较小时较好 动画演示 代码思路 使用 2 层 for 循环实现,外层 for 循环表示已排序序列,从 i = 0 开始,原创 2020-07-31 10:39:19 · 169 阅读 · 0 评论 -
数据结构和算法 - 插入排序
基本介绍 把 n 个待排序的元素看成一个有序表和一个无序表,开始时有序表只有一个值,无序表有 n-1 个值,每次排序从无序表取出元素与有序表进行比对,插入适当位置成为新的有序表。 核心思想 把 n 个待排序的元素看成一个有序表和一个无序表,从无序列表取数据与有序列表对比并插入合适的位置 时间复杂度 排序法 平均时间 最差情形 稳定度 额外空间 备注 冒泡 O(n2n^{2}n2) O(n2n^{2}n2) 稳定 O(1) 大部分排好序时较好 动画演示 代码思路 使用 for 循环变量原创 2020-07-30 17:54:24 · 237 阅读 · 0 评论 -
数据结构和算法 - 冒泡排序
思路 通过对待排序的序列从前往后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使较大的元素逐渐从前移向后部 核心思想 依次比较相邻元素的值,若发现逆序则交换 代码实现 /** * @author tianhuiwen * @date 2020/7/16 14:44 */ public class BubbleSort { public static void main(String[] args) { int[] array = {3, 9, -1, 10原创 2020-07-30 16:56:15 · 219 阅读 · 0 评论