首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

冒泡排序(Bubble Sort)

文章目录 算法描述 动图演示 代码实现 算法分析 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。...走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 算法描述 比较相邻的元素。...如果第一个比第二个大,就交换它们两个; 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数; 针对所有的元素重复以上的步骤,除了最后一个; 重复步骤1~3,直到排序完成...代码实现 下面的排序算法统一使用的测试代码如下,源码GitHub链接 public static void main(String[] args) { int[] array = {3, 44,...* * @param array 需要排序的数组 * @author JourWon * @date 2019/7/11 9:54 */ public static void bubbleSort(int

38820

冒泡排序算法(Bubble Sort)

【冒泡排序算法基本思想和案例】 冒泡排序:          对比相邻的元素值,如果满足条件就交换元素值,把较小的元素移动到数组的前面,把大的元素移动到          数组的后面(也就是交换两个元素的位置...案例:          初始数组资源【63    4    24    1    3    15】 算法主要代码: // 定义方法实现数组的冒泡排序算法 public static void bubbleSort...】 * 冒泡排序: * 对比相邻的元素值,如果满足条件就交换元素值,把较小的元素移动到数组的前面,把大的元素移动到 * 数组的后面(也就是交换两个元素的位置),这样数组元素就像气泡一样从底部上升到顶部。...{ public static void main(String[] args) { int[] array = {63, 4, 24, 1, 3, 15}; System.out.println("排序前...array) { System.out.print(i + "\t"); } System.out.println(); bubbleSort(array); System.out.println("排序后

68220
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    交换排序—冒泡排序(Bubble Sort)

    基本思想: 最简单的排序,也是最耗时间的排序 在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。...即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。 冒泡排序的示例: ?...对冒泡排序常见的改进方法是加入一标志性变量exchange,用于标志某一趟排序过程中是否有数据交换,如果进行某一趟排序时并没有进行数据交换,则说明数据已经按要求排列好,可立即结束排序,避免不必要的比较过程...改进后算法如下: void Bubble_1 ( int r[], int n) { int i= n -1; //初始时,最后位置保持不变 while ( i> 0) { int pos=...改进后的算法实现为: void Bubble_2 ( int r[], int n){ int low = 0; int high= n -1; //设置变量的初始值 int tmp,j; while

    90020

    冒泡排序算法(Bubble Sort)—经典排序算法

    导言 冒泡排序是最基本、最简单的排序算法之一,它通过多次遍历待排序的数组或列表,依次比较相邻的元素并交换位置,使得较大(或较小)的元素逐渐“浮”到数组的一端。...图 1 第 1 趟冒泡排序的过程示例 经过第 1 趟排序,我们已经找到了最大的元素,接下来的第 2 趟排序就只对剩下的 4 个元素排序。第 2 趟排序的过程示例如图 2 所示。...第3趟排序的结果应该是 99、76、35、12、18,接下来第 4 趟排序的结果是 99、76、35、18、12,经过 4 趟排序之后,只剩一个 12 需要排序了,这时已经没有可比较的元素了,所以排序完成...特点及性能 通过冒泡排序的算法思想,我们发现冒泡排序算法在每轮排序中会使一个元素排到一端,也就是最终需要 n-1 轮这样的排序(n 为待排序的数列的长度),而在每轮排序中都需要对相邻的两个元素进行比较,...其实冒泡排序在最好的情况下,时间复杂度可以达到 O(n),这当然是在待排序的数列有序的情况下。在待排序的数列本身就是我们想要的排序结果时,时间复杂度的确是 O(n),因为只需要一轮排序并且不用交换。

    21910

    1.冒泡排序(Bubble Sort)

    算法简介 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。...算法原理 冒泡排序算法的原理是: 重复地走访过要排序的元素列,一次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。...排序算法的内存消耗 可用空间复杂度衡量,原地排序(Sorted in place)特指空间复杂度是O(1)的排序算法。...排序算法的稳定性 如1(A),2,3,4,5,1(B),排序后保持1(A),1(B),2,3,4,5,即1(A)仍在1(B)左边,那这个就是稳定的排序算法;反之为不稳定的排序算法。...排序的过程就是增加有序度减少逆序度的过程,直到达到满有序度,排序完成。 冒泡排序时间复杂度分析 冒泡排序包含2个操作原子,比较和交换。每交换一次,有序度加1。

    1.2K10

    房上的猫:经典排序算法 - 冒泡排序Bubble sort

    原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束,以此类推 例子为从小到大排序..., 原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 | 第一趟排序(外循环) 第一次两两比较6 > 2交换(内循环) 交换前状态| 6 | 2 | 4 | 1 | 5 | 9 | 交换后状态...| 5 | 6 | 9 | 第五次两两比较,6 < 9不交换 交换前状态| 2 | 4 | 1 | 5 | 6 | 9 | 交换后状态| 2 | 4 | 1 | 5 | 6 | 9 | 第二趟排序...| 5 | 6 | 9 | 第四次两两比较,5 < 6不交换 交换前状态| 2 | 1 | 4 | 5 | 6 | 9 | 交换后状态| 2 | 1 | 4 | 5 | 6 | 9 | 第三趟排序...(外循环)无交换 第五趟排序(外循环)无交换 排序完毕,输出最终结果1 2 4 5 6 9 动态图演示: ?

    820100

    【数据结构实验】排序(一)冒泡排序改进算法 Bubble及其性能分析

    这个过程类似于气泡上浮,因此得名冒泡排序,其ADL语言表示如下: 2.2 改进的冒泡排序   改进的冒泡排序在传统冒泡排序的基础上,通过记录每一趟排序中最后一次交换的位置,减少了比较的次数。...实验内容 3.1 实验题目   实现冒泡排序改进算法 Bubble....3.2 算法实现 #include #include void Bubble(int R[20],int n){ int bound,i,j,t,e,Compare...1,2,3,4,5,8,7,6,9,10,11,18,13,14,15,16,17,12,19,20}; //int R[20]={1,3,2,5,4,7,6,9,8,11,10,13,12,15,14,17,16,19,18,20}; Bubble...(R,20); for(i=0;i<20;i++) printf("%d ",R[i]); return 0; } Bubble函数 变量bound ,用于控制每一轮冒泡排序的边界,初始化为数组的大小

    14410

    java冒泡排序代码_Java冒泡排序

    一、冒泡排序: 利用冒泡排序对数组进行排序 二、基本概念: 依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。...四、java代码实现: package 冒泡排序; import java.util.Arrays; /** * 冒泡排序 * @author chen * */ public class BubbleSort...六、算法优化: 冒泡排序法存在的不足及改进方法: 第一,在排序过程中,执行完最后的排序后,虽然数据已全部排序完备,但程序无法判断是否完成排序,为了解决这一不足,可设置一个标志位flag,将其初始值设置为非...在新一轮排序开始时,检查此标志,若此标志为0,表示上一次没有做过交换数据,则结束排序;否则进行排序; package 冒泡排序; import java.util.Arrays; /** * 冒泡排序改进版...由于局部冒泡排序和冒泡排序的数据移动次数总是相同的,而局部冒泡排序所需关键字的比较次数常少于冒泡排序,这意味着局部冒泡排序很可能在平均比较次数上对冒泡排序有所改进,当比较次数较少的优点不足以抵消其程序复杂度所带来的额外开销

    1.9K61

    java链表排序方法_java链表排序

    插入排序 对链表进行插入排序,是最简单的一种链表排序算法,用于插入排序是迭代的,所以每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。...每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。重复直到所有输入数据插入完为止。...对于归并排序排序在数组排序中的运用,详细请点击此处。...这里主要介绍归并排序在链表排序中的运用。...在使用归并排序算法进行链表排序时,其基本思想是将链表细分成一个个子链表,将子链表进行排序,然后再将相邻的两个有序子链表进行合并,得到更长的有序链表,最后一步步得到整个有序链表,子链表进行合并排序时需要用到合并两个有序链表算法

    99410

    快速排序Java实现_快速排序实现java

    高快省的排序算法 有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。 假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。...最终将会得到这样的序列,如下 1 2 3 4 5 6 7 8 9 10 到此,排序完全结束。...细心的同学可能已经发现,快速排序的每一轮处理其实就是将这一轮的基准数归位,直到所有的数都归位为止,排序就结束了。下面上个霸气的图来描述下整个算法的处理过程。 这是为什么呢?...快速排序之所比较快,因为相比冒泡排序,每次交换是跳跃式的。每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。...因此快速排序的最差时间复杂度和冒泡排序是一样的都是O(N2),它的平均时间复杂度为O(NlogN)。其实快速排序是基于一种叫做“二分”的思想。我们后面还会遇到“二分”思想,到时候再聊。

    1.4K10

    java冒泡排序经典代码_java冒泡排序

    经典算法——冒泡排序(Bubble Sort) 一、示例代码(伸手党看这里) 1.示例一 importjava.util.Arrays;public classBubbleSort {public static...int temp; /*临时变量,交换数据时使用*/ int length =arr.length;for(int p = length-1; p > 0; p–){ /*需要进行N-1(数组长度减一)趟排序...*/ for(int i = 0; i 排序 */if(arr[i] > arr[i+1]){//进行位置交换 temp =arr[i]; arr[i]= arr[i+1...在使用冒泡排序的时候有可能会遇到这样一种情况:某一趟排序从头到尾,数组中的数字都没有发生位置交换。 那么上面这种情况说明了什么呢?说明了在经过上一趟的排序后,整个数组就已经被排好序了。...这么说的话原来计划的N-1趟排序我们是不是可以不用跑满了?是的!

    77520
    领券