排序算法可视化系列——篇五“冒泡排序”
冒泡排序
基本思想分析:
冒泡排序是大家都很熟悉的排序算法了,因为用这个排序方法的地方很多,我记得就是计算机基础的老师都讲过,冒泡排序之所以称为这样,是因为它的排序过程很像水泡从水下面到上面的过程。而且在冒泡排序中,我们可以从前往后进行冒泡,也可以从后向前进行冒泡,因为什么呢,因为冒泡排序的思想很简单,就是根据大小交换相邻的两个元素的位置,从后向前(或是从前向后)一直将相邻的两个元素进行交换,直到最大或是最小的元素处于数组的最左边或是最右边(这看你是按哪种大小顺序进行排序)。
算法描述:
//我们假设对于简单的整型数组进行排序,而且按照从小到大的顺序进行排列
for(对于整个数组进行循环i=1~n-1){
判断数组已经有序,如果有序则不进行下面的冒泡
for(从位置i元素开始进行冒泡的过程j=i~n-1){
比较相邻元素的大小,如果j大于j+1,则交换两个元素
}
}
算法分析:
我们可以从上面的算法描述中可以看出,冒泡排序在最糟糕的情况下,其时间复杂度为O(n^2),最好的情况是在排序之前数组已经有序,那么其此时的时间复杂度为
O(n),因此冒泡排序在基本有序的数组中其效率还是可观的。
基本的Java语言实现:
/** * 冒泡排序的基本Java语言实现 * 此处是对于基本的整型数组,按照从小到大的顺序进行排序 */ public class AlgorithmBubleSort{ public static void bubleSort(int[] array){ boolean isOrdered = true; int length = array.length; /** * 只需要进行n - 1次循环即可,因为后面n - 1个元素有序 * 就说明整个数组已经有序 */ for(int i = 0; i < length - 1; i++){ /** * 进行判断是否已经有序 */ if(isOrdered){ isOrdered = false; /** * 进行冒泡的过程 */ for(int j = 0; j < length - i - 1; j++){ if(array[j] > array[j + 1]){ array[j] += array[j+1]; array[j+1] = array[j] - array[j+1]; array[j] = array[j] - array[j+1]; isOrdered = true; }//end if }//end for }else{ break; } }//end for }//end bubleSort }
下面是关于冒泡排序的动态演示:
一、排序中。。。。。。
二、排序中。。。。。。
三、排序完成
上面是对冒泡排序的动态演示,下面附源代码:
相关推荐
包含的排序算法: 冒泡排序 插入排序和快速排序。 原理就是每次迭代就重新绘制一遍。用数组内的元素作为坐标绘制线条长度,代表带牌元素状态。 但是通过VS调试运行没有问题,直接运行会出现卡死的情况。
该源码使用Qt可以可视化展示冒泡排序算法实现效果,方便初学者理解冒泡算法,如果你有一些其他的小需求,可以在此基础上修改完善
八种排序算法分别是: 1.冒泡排序; 2.选择排序; 3.插入排序; 4.快速排序; 5.归并排序; 6.希尔排序; 7.二叉排序; 8.计数排序; 其中快排尤为重要,几乎可以说IT开发类面试必考内容,而希尔排序和归并...
排序数据随机产生,针对随机案例,对冒泡排序、箱子排序、堆排序、归并算法,提供排序执行过程的动态图形演示。
资源描述:基于Qt的可视化界面,编写的冒泡排序和可视化排序的比较算法,通过生成10000个随机数,多线程进行排序比较,可直观看到时间复杂度对程序运行的影响程度。 可以学到的知识:Qt多线程,多进程,冒泡排序算法...
博客地址:https://blog.csdn.net/qq_30259857/article/details/81071081 冒泡排序,选择排序,插入排序,归并排序,快速排序的 Unity Demo
该源码使用Qt可以可视化展示冒泡排序算法实现效果,在原来的基础上添加了冒泡排序算法的比较次数和移动次数,方便初学者理解冒泡排序算法的时间复杂度
排序可视化器 我们知道排序算法,例如冒泡排序,选择排序,插入排序,快速排序。 但是通常我们无法理解特定算法的核心思想,也许是因为我们无法直观地了解它们的工作原理。 因此,要了解这些算法,最重要的是可视化...
用C++语言实现冒泡排序算法的动态掩饰的代码
程序实现选择,快速,希尔,归并,插入,冒泡,猴子算法的排序可视化,有助于理解各排序算法的排序过程,直观看出算法的优劣。
用java做的一个小的排序算法演示程序,用线程控制访问,共7个算法,包括冒泡,选择,希尔,插入,归并,堆,快排。。
js冒泡算法可视化排序过程 可可扩展经典三大算法
自己写的可视化算法,如果有错误。可以私信我哦! t = turtle.Turtle() w = turtle.Screen() turtle.hideturtle() turtle.getscreen().tracer(5,0) turtle.penup() turtle.backward(150) turtle.pendown() turtle....
用户可以选择排序算法,例如冒泡排序,选择排序,插入排序,快速排序等,使用排序可视化工具将其可视化。这是使用flutter框架构建的简单排序可视化应用程序。 用户可以选择排序算法,例如冒泡排序,选择排序,插入...
这是把冒泡排序可视化,让你知道排序过程的每一次交换数据 冒泡排序是数据结构的一个入门必学知识,此代码完全免费,希望能帮到大家
1. 该程序为一个可以展示不同排序算法的排序过程动画,... 一共有三种排序方法——直接插入排序、直接选择排序和冒泡排序快速排序,; 3. 排序元素输入为手动输入; 4. 有进度条显示排序的进度; 5. IDE:Eclipse
可视化排序冒泡排序:依次比较数组中相邻的两个元素,如果左边比右边大则进行调换,以此类推,这样第一次排序就把最大的元素放在最底下
包含冒泡排序、选择排序、快速排序、希尔排序等排序的可视化,javascript实现,使用了类的实现方式,具有动画演示。