首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

动态可视化十大排序算法之冒泡排序

虽然排序在我们日常生活中很常见、常用。但是对于那时的自己来说还是很难理解的。而且自己也是在对比着书修改了很多遍才正确的编译运行。 当时我就想着要是有一个算法执行过程的动态图那就好了。...我一直也在这样尝试着这样做,今天我就带你来体验下冒泡排序算法的动态执行过程。 话不多说,直接上干货,先带你看下效果,包你满意。...如何评价一个排序算法? 通过上面的程序,我们就实现了冒泡排序算法,那么如何评价一个排序算法呢?我想这个你在学习数据结构与算法的时候一定都学过。...优化 时间复杂度是 O(n2) 的排序算法是比较耗时的,适用于小规模的数据,不适用于大规模的数据排序,那有没有优化的方法呢? 要想从时间复杂度的量级上优化,这个就只能换排序算法了。但是呢?...总结 冒泡排序是一种时间复杂度较高的排序算法,所以呢大部分时候都是在教科书中出现,在实际的项目或者使用过程中很少有它的身影。

60630

动态可视化十大排序算法之插入排序

老规矩,先简单介绍下插入排序的思想,然后看下插入排序算法执行的每一步。...思想 插入排序,顾名思义,关键的词就是插入,类比于选择排序,每次从待排序区间选择最小值和待排序区间的第一个元素进行交换;插入排序也是同样的套路,它同样把待排序元素分为已排序区间和待排序区间,每次从待排序区间选择第一个元素...,插入到已排序区间的对应位置,可以脑补下自己抓牌的过程,这样,每次迭代下来,已排序区间的长度加 ,未排序区间的长度减 ,迭代 为待排序元素的长度 次,元素就会变得有序。...可以看到啊,插入排序的思想就是要在已排序区间中找到插入元素的位置,主要细节啊,在已排序区间查找第一个值大于给定值的元素位置,同理,在已排序区间查找最后一个值小于给定值的元素位置也可以。...是稳定排序算法。 总结 好了,今天的插入排序就到这里了,插入排序在一些程序语言内置的排序函数中还有用到。比如说 Java 中的 sort 函数。

59510

动态可视化十大排序算法之选择排序算法

选择排序 提及选择排序算法,我是一点都不陌生,我大一上学期在 C 语言这门课程中学习到的两个算法,其中一个就是选择排序算法,另一个就是冒泡排序算法。...选择排序的思想也是基于交换的,它的数组分为待排序区间和已排序区间,这点和插入排序的操作有点像,插入排序我们下篇文章会讲。...但是选择排序是每次从待排序区间选择最小的值,和待排序区间的第一个元素进行交换,这样的话,每次迭代,已排序区间的长度都会加 1,而待排序区间会 减 1,这样迭代 n 次,数组就会变得有序。...其实总结来看,一般来说,只要在排序过程只是在相邻元素之间进行比较、交换,比如冒泡排序,插入排序,那么这个排序算法就是稳定的。...总结 选择排序和冒泡排序算法一样,都是时间复杂度是 的排序算法,这种排序算法时间复杂度比较高,很少在实际场景中使用。 但是这两个排序算法都是非常经典的排序算法。

65040

各种常用排序算法(CC++,Java)动态显示

各种常用的排序算法 0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序...1、冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。...理论上讲,选择排序可能也是平时排序一般人想到的最多的排序方法了吧。 3、插入排序(Insertion Sort) 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。...希尔排序又叫缩小增量排序。...既可以提前设定好间隔序列,也可以动态的定义间隔序列。动态定义间隔序列的算法是《算法(第4版)》的合著者Robert Sedgewick提出的。

57820

在线配置生成动态排序柱状图工具上线

然后他说,之前用的别的工具网站非常卡,又发给我一个做的动态排序的视频。 于是,我的点子来了,咱就是说,要做一个更流畅的动态排序柱状图的在线生成工具,这不,他来了。...如何生成动态排序柱状图 首先,作图步骤分为两步,对应两个 Tab。 编辑数据 第一步,编辑数据 Tab。...可以给每个数据系列配上自定义图标,滑到编辑器底部即可看到,数据格式为 {name:icon_url} 在此配置每个系列的图标,默认配置了 name 为 China 和 United States 的图标,所以最上面我们的动态排序图中也只有这两个...编辑动态排序图 编辑好数据和图标后,我们可以点击第二个 Tab。 在这个 Tab 可以编辑图表的标题、副标题、y 坐标名称等,也可以设置每一帧的间隔时间。

67940

ActiveReports 报表应用教程 (9)---交互式报表之动态排序

在葡萄城ActiveReports报表中除了提供对数据源进行排序的功能之外,还提供了最终用户排序功能,最终用户可以对报表进行区域内排序和整个数据源排序,结合数据钻取、过滤等功能可以让用户更方便地分析报表数据...5、为列头单元格添加动态排序功能 选择列头单元格,在属性对话框中的命令区域点击属性对话框,以打开文本框属性设置对话框,并在交互式排序页面中分别设置以下属性: 产品名称列: 为文本框添加交互式排序功能:True...排序表达式:=[产品名称] 数据区域或分组排序:选择数据区域或者分组,Table1_Group1 在此范围内的评估排序表达式:当前范围 单位数量列: 为文本框添加交互式排序功能...在此范围内的评估排序表达式:当前范围 库存量列: 为文本框添加交互式排序功能:True 排序表达式:=[库存量] 数据区域或分组排序:...:当前范围 6、运行程序 通过 F5 键运行程序,在每列列头的右侧有一个排序图表,点击排序图表可以实现对数据的排序操作: ?

882100

iOS可视化动态绘制八种排序过程(Swift版)

前面几篇博客都是关于排序的,在之前陆陆续续发布的博客中,我们先后介绍了冒泡排序、选择排序、插入排序、希尔排序、堆排序、归并排序以及快速排序。...如果你想对上述7中排序进行详细的了解,请移步与之前的博客《冒泡排序、插入排序、希尔排序、选择排序》、《堆排序》、《归并排序》、《快速排序》、《基数排序》。废话少说,开始今天的博客。...下方的SegmentControl可以选择不同的排序方式,本篇博客给出了7中常用的排序方式,选择完排序方式后可以点击右上方的排序按钮进行相应的排序。...五、希尔排序 希尔排序的效率要高一些,其时间复杂度是O(n^(3/2))。下方就是希尔排序的具体执行步骤,希尔排序又称为缩小增量排序。...该排序方式是插入排序的升级版,等增量缩小到1时,我们的序列就是有序的了。下方就是希尔排序的具体执行步骤,如下所示: ? 六、堆排序排序比希尔排序更为高效,其时间复杂度为O(nlog2n)。

71690

常见排序算法-冒泡排序、选择排序 、插入排序 、快速排序、 归并排序 、堆排序

‍个人主页: 才疏学浅的木子 ‍♂️ 本人也在学习阶段如若发现问题,请告知非常感谢 ‍♂️ 本文来自专栏: 算法 算法类型:排序算法 排序算法 冒泡排序 冒泡排序的优化 选择排序 插入排序...快速排序 归并排序排序 冒泡排序 平均时间复杂度: o(n^2) 最好时间: o(n) 最坏时间: o(n^2) 空间复杂度: o(1) 是否稳定: 稳定 简单的冒泡排序...[3,2,1,4,5,6] 如果按照普通冒泡排序下次需要遍历的下标范围为[0,4] 但是[3,4]是已经有序的,所以可以减少比较,保存上次交换的结束位置 public int[] bubbleSort...平均时间复杂度: o(n^2) 最好时间: o(n) 最坏时间: o(n^2) 空间复杂度: o(1) 是否稳定: 稳定 插入排序 public int[] insertSort...平均时间复杂度: o(nlogn) 最好时间: o(nlogn) 最坏时间: o(n^2) 空间复杂度: o(logn) 是否稳定: 不稳定 快速排序 public void

86550

基本排序算法(冒泡排序 选择排序 插入排序 快速排序 归并排序 基数排序 希尔排序

项目地址:https://github.com/windwant/windwant-service/tree/master/algorithm 冒泡排序:两两比较,大数冒泡 升序: public static...选择排序:选择剩余元素中最小(最大)的元素放置到初始选择集合中(空) public static void SelectionSortAsc(int[] arr){ int min = 0;...:设定一个初始已排序的集合(一般选择一个元素),从剩余的集合中将各个元素以此插入到初始集合中的正确位置 public static void insertionSort(int [] array){...左边的元素值都小于anchor值,右边的值都大于anchor值,递归排序左右两侧排序 //左边元素。...值索引+1---high if (end < high) { quikeSort(arr, end + 1, high); } } 归并排序

68720
领券