首页 > 其他分享 >冒泡排序

冒泡排序

时间:2024-09-22 22:46:00浏览次数:6  
标签:int 复杂度 元素 交换 冒泡排序 排序

冒泡排序

. . . . . .

定义

冒泡排序(Bubble sort)是一种简单的排序算法。由于在算法的执行过程中,较小的元素像是气泡般慢慢「浮」到数列的顶端,故叫做冒泡排序。

过程

它的工作原理是每次检查相邻两个元素,如果前面的元素与后面的元素满足给定的排序条件,就将相邻两个元素交换。当没有相邻的元素需要交换时,排序就完成了。

经过 i 次扫描后,数列的末尾 i 项必然是最大的 i 项,因此冒泡排序最多需要扫描 n-1 遍数组就能完成排序。

稳定性

冒泡排序是一种稳定的排序算法。

时间复杂度

在序列完全有序时,冒泡排序只需遍历一遍数组,不用执行任何交换操作,时间复杂度为 O(n)。

在最坏情况下,冒泡排序要执行 n(n-1) / 2 次交换操作,时间复杂度为 O(n^2)。冒泡排序的平均时间复杂度为 O(n^2)。

代码实现

#include <bits/stdc++.h>
using namespace std;
int a[5] = {0,3,2,1};
int main()
{
	for(int i = 1;i <= 3;i++)
	{
		for(int j = 1;j < 3;j++)
		{
			if(a[j] > a[j+1])
			{
				swap(a[j],a[j+1]);
			}
		}
	}
	for(int i = 1;i <= 3;i++) cout << a[i] << " ";
	return 0;
}

. . . . . .

标签:int,复杂度,元素,交换,冒泡排序,排序
From: https://www.cnblogs.com/Domi2011/p/18426050

相关文章

  • 冒泡排序
    publicclassArraysDemo01{publicstaticvoidmain(String[]args){//冒泡排序//比较数组中,两个相邻的元素,如果第一个比第二个数大,调换位置//每一次比较,都会产生一个最大或者最小的数//下一轮可以少一次排序intar[]={1,212,6,9,12,88,2,22};System.out.println(Arrays......
  • 冒泡排序、选择排序、插入排序 - JavaScript 中的数据结构和算法
    排序算法是许多计算任务的支柱,在组织数据以实现高效访问和处理方面发挥着至关重要的作用。无论您是刚刚开始探索算法世界的初学者,还是希望刷新知识的经验丰富的开发人员,了解这些基本排序技术都是至关重要的。在这篇文章中,我们将探讨一些更基本的排序算法-冒泡排序、选择排序和插......
  • 冒泡排序(重要!)
    1.作用比较数组中两个相邻的数,如果第一个数比第二个数大,则会交换位置。每一次比较都会产出最大或是最小的数,下一轮则可以少一次排序,依次循环,直到结束2.机制冒泡排序分为两个循环,外层冒泡轮数(总的次数循环),而内层比较大小(两个数进行比较)可以想象有三个杯子,假如1号大于2号,需要把......
  • 冒泡排序
    点击查看代码packageSort;importjava.util.Arrays;//每一轮外层循环都会固定一个最大或最小的数到后面去,然后内层循环继续从0开始到最后未排序的数组末项publicclassBubbleSort{publicstaticvoidmain(String[]args){int[]a={2,3,0,8......
  • 冒泡排序
    1.插入排序1.1基本思想直接插入排序是一种简单的插入排序法。其基本思想是把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。1.2直接插入排序当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i......
  • 冒泡排序理解
    1.1思路冒泡排序是一种简单的排序方法。基本思路是通过两两比较相邻的元素并交换它们的位置,从而使整个序列按照顺序排列。该算法一趟排序后,最大值总是会移到数组的最后面,那么接下来就不用再考虑这个最大值。一直重复这样的操作,最终就可以得到排序完成的数组。这种算法是稳......
  • [c++][笔记]浅谈几种排序方式---冒泡排序,选择排序,桶排序
     一、algorithm里的sort函数 #include<cstdio>//数据小的可以用iostream#include<algorithm>//不能忘记算法库,否则会编译失败。usingnamespacestd;intmain(){intn;scanf("%d",&n);inta[n+5]={};for(inti=1;i<=n;i++){......
  • C语言 跟着Mr.狠人一起实现冒泡排序
    冒泡排序(bubblesort)基本原理很简单,如图所示: 这边方便大家快速观察顺序:这边我们可以观察出冒泡排序是两两相比,每一趟都能确定最后一位成为本趟的最大值。 10个数字9趟就完成了。那我们试着写写代码吧voidbubble_sort(intarr[],intsz){ inti=0;//趟数 for......
  • 「NOI2022 D2T2 冒泡排序」题解
    题意uoj768构造长为\(n\)的序列\(a\),满足\(m\)条限制:\(\min_{j=L_i}^{R_i}\{a_j\}=V_i\),要求逆序对数最少题解21pts暴力先进行一些观察:逆序对只关心相对大小,所以\(\foralla_j\)必然\(\in\{V_i\}\),可以完全离散化经典结论:若\(i<j,a_i>a_j\)且交换后合法,则交换......
  • 冒泡排序算法
    冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行的,直到没有再需要交换的元素为止,这意味着数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(或说是......