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

冒泡排序(Bubble Sort

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

36620

冒泡排序算法(Bubble Sort

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

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

交换排序冒泡排序(Bubble Sort

基本思想: 最简单的排序,也是最耗时间的排序 在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较调整,让较大的数往下沉,较小的往上冒。...即:每当两相邻的数比较后发现它们的排序排序要求相反时,就将它们互换。 冒泡排序的示例: ?...++j) { if(a[j] > a[j+1]) { int tmp = a[j] ; a[j] = a[j+1] ; a[j+1] = tmp; } } } } 冒泡排序算法的改进...对冒泡排序常见的改进方法是加入一标志性变量exchange,用于标志某一趟排序过程中是否有数据交换,如果进行某一趟排序时并没有进行数据交换,则说明数据已经按要求排列好,可立即结束排序,避免不必要的比较过程...} } 2.传统冒泡排序中每一趟排序操作只能找到一个最大值或最小值,我们考虑利用在每趟排序中进行正向反向两遍冒泡的方法一次可以得到两个最终值(最大者最小者) , 从而使排序趟数几乎减少了一半

87020

1.冒泡排序(Bubble Sort

算法简介 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。...算法原理 冒泡排序算法的原理是: 重复地走访过要排序的元素列,一次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。...a[0] a[1] 比较了....时间复杂度 排序算法分析的方方面面 排序算法的执行效率 1.最好、最坏、平均情况时间复杂度; 2.时间复杂度的系数、常数、低阶; 3.比较次数交换(或移动)次数。...排序的过程就是增加有序度减少逆序度的过程,直到达到满有序度,排序完成。 冒泡排序时间复杂度分析 冒泡排序包含2个操作原子,比较交换。每交换一次,有序度加1。

1.1K10

房上的猫:经典排序算法 - 冒泡排序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 动态图演示: ?

782100

冒泡排序选择排序

一、冒泡排序 1.冒泡排序的原理 1.从尾部开始比较相邻的两个元素,如果尾部的元素比前面的大,就交换两个元素的位置。...,未排序中最大(最小)的那个数就会被排到未排序的数的最后 2.实现冒泡排序 1.交换函数 通过原理的讲解不难看出,冒泡排序要实现多次的交换,因此我们可以写一个简单的交换函数 void Swap(int...1.选择排序的原理 选择排序十分的简单粗暴,就是在数组中找到最大值最小值,然后把它们放到对应的位置,如果你想排升序最大值放右边,最小值放左边,排降序相反即可。...2.实现选择排序 1.单躺排序 第一趟排序我们找到最大值最小值然后把它们放在对应的位置即可 void SelectSort(int*arr,int n) { int max = 0; int min...== max) //更新 { max = min; } Swap(&arr[n - 1 - j], &arr[max]); //将最大值放到最后 } } 5.测试 至此,冒泡排序选择排序讲解完成

7210

C语言冒泡排序选择排序_选择排序冒泡排序哪个快

实例1 冒泡排序 数组中有N个整数,用冒泡法将它们从小到大(或从大到小)排序。...实例解析: 排序是非常重要且很常用的一种操作,有冒泡排序、选择排序、插入排序、希尔排序、快速排序、堆排序等多种方法。...这里我们先简单介绍前三种排序算法代码的实现,其余算法将在后续课程《数据结构》中学习到。...冒泡排序是C语言教材中已经介绍过的排序方法,与其他排序方法比较起来,冒泡法效率是最低的,但因其算法简单,故也常被采用,其算法是: (1)从第一个数开始,相邻两个数两两比较,将大的(或小的)交换到后面,...实例解析: 插入排序也是常用的一种排序方法,效率较冒泡法高(一趟即可完成),但比选择法低(移动数据次数多)。

67940

详解排序算法--插入排序冒泡排序插入排序冒泡排序分析

冒泡排序 插入排序 插入排序冒泡排序分析 冒泡排序 Paste_Image.png 冒泡排序(英语:Bubble Sort,中国台湾另外一种译名为:泡沫排序)是一种简单的排序算法...尽管这个算法是最简单了解实现的排序算法之一,但它对于包含大量的元素的数列排序是很没有效率的。 冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。...类似于摸牌的过程 Paste_Image.png 插入排序(英语:Insertion Sort)是一种简单直观的排序算法。...&& a[j-1] > temp;j--) a[j] = a[j-1]; a[j] = temp; } } } 插入排序冒泡排序分析...给定初始序列{34, 8, 64, 51,32, 21},冒泡排序插入排序分别需要多少次元素交换才能完成?

55710

C 冒泡排序选择排序

冒泡排序       理论概念: 从第一个数开始,将相邻的两个数比较,第一个数第二个数比较,比如说是从小到大的排序,要是后面的数比前面的小则交换两个的位置,这样第一轮比较基数后最大的数就到了最后面,接着进行第二轮的比较...,比较到前面N-1个数,原理也是前面的那样,大的往后面不停的排,直到比较到前面只剩下一个数的时候,就完成了排序,这就是冒泡的原理:       第一层循环控制的是我们需要比较多少轮,每比较一轮我们的第二层就少比较一个值...冒泡排序的代码: #include "stdio.h" #define N 10 int main(){ int a[N]; int i,j,t; printf(..."请输入您要排序的%d 数字\n",N); /*输入十个数*/ for(i=0;i<N;i++) scanf("%d",&a[i]); /*冒泡*/...第二层就是后面一个个挑战的选手,要是一旦发现符合比较条件的,就交换他们的值,在接着后面比较。

50320

C语言冒泡排序升序_c语言快速排序冒泡排序

};//十个数的无序数列 int i,j,t; printf("此程序使用冒泡排序法排列无序数列!...\n"); //冒泡排序 for(i=0;i<10-1;i++)//n个数的数列总共扫描n-1次 { for(j=0;j<10-i-1;j++)//每一趟扫描到a...\n"); //冒泡排序 for(i=0;i<10-1;i++)//n个数的数列总共扫描n-1次 { for(j=0;j<10-i-1;j++)//每一趟扫描到a...:也叫升序排序法,但是相比起二分法查找只能应用于有序数列,二如何将一个无序数列变的有序就可以使用冒泡排序法!!!...对上面的过程进行总结: 该思想体现在成续上的解法是: 实例: 冒泡排序不仅仅可以应用于数字同样可以应用于字符字母的快速排序: 心得体会: 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人

2K10

java冒泡排序快速排序

一、冒泡排序 1.算法介绍 设排序表长为n,从后向前或者从前向后两两比较相邻元素的值,如果两者的相对次序不对(A[i-1] > A[i]),则交换它们,其结果是将最小的元素交换到待排序序列的第一个位置,...我们称它为一趟冒泡。...下一趟冒泡时,前一趟确定的最小元素不再参与比较,待排序序列减少一个元素,每趟冒泡的结果把序列中最小的元素放到了序列的”最前面”。 ?...2.算法实现 冒泡排序封装函数的代码如下 public void bubbleSort(int[] arr) { int temp;//定义一个临时变量 for(int i=0;i<arr.length...下面我们来看看java中的Arrays.sort(int []a)方法是怎么实现的。 ---- 二、快速排序 java中Arrays.sort使用了两种排序方法,快速排序优化的合并排序

1.2K30

经典排序算法python详解(二):冒泡排序、双向冒泡排序、插入排序希尔排序

经典排序算法python详解(二):冒泡排序、双向冒泡排序、插入排序希尔排序 内容目录 一、冒泡排序(Bubble Sort)二、冒泡排序法改进三、双向冒泡排序法四、插入排序五、希尔排序(插入排序改进...) 一、冒泡排序(Bubble Sort冒泡排序是一种计算机科学领域的较简单的排序算法。...,针对这一问题,可以采用双向冒泡排序法,也称鸡尾酒排序法对传统的冒泡排序法进行改进。...双向冒泡排序法由两个方向同时进行冒泡,首先由左向右为大元素移动方向,从右向左为小元素移动方向,然后每个元素都依次执行。在第i次移动后,前i个后i个元素都放到了正确的位置。...Increment Sort),是直接插入排序算法的一种更高效的改进版本。

1.4K30

排序——冒泡排序

冒泡排序 比较相领的元素 - 如果第一个比第二个大(升序),就交换他们两个。 - 对每一个相领元素作同样的工作,从开始第一对到结尾的最后一对。 - 这步做完后,最后的元素会是最大的数。...> n; cout << "请输入数组元素:"; for (int i = 0; i < n; i++) cin >> a[i]; // 输入数组a f(a, n); cout << "排序后的元素为...复杂度计算 - 最优时间复杂度:O(n) (表示遍历一次发现没有任何可以交换的元素,排序结束。)...- 最坏时间复杂度:O(n^2) - 稳定性:稳定 ************ python代码实现 '''冒泡排序-BubbleSort''' def bubble_sort(alist): for...> alist[i+1]: alist[i], alist[i+1] = alist[i+1], alist[i] l = [54, 45, 32, 34, 56, 90] bubble_sort

1.1K85

排序-冒泡排序

排序算法之【冒泡排序】 在写代码之前我们需要对冒泡排序有一个逻辑上的理解:即什么是冒泡排序呢?...冒泡排序排序算法的其中一种,该排序的逻辑理解起来较为容易,理解上可以有两种方式,一种中正向的思维,一种是逆向的思维,什么意思呢?所谓的正向思维就是从前往后,从左往右,从上到下。...下面来说一正向思维下的冒泡排序: 例如给你一组数据:{1, 34, 56, 8, -32, 7, -9, 0, 235 }在正向思维下的排序方式就是从左到右的进行排序,其排序的是按照第一个数第二个数比较大小...: /** * @author yxm * 正向思维下的冒泡排序 * */ public class MaoPaoSort { public static void main(String[]...创作难免有错误不当的地方,还请大家多多指教。

50210

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券