首页 > 其他分享 >冒泡排序(Bubble Sort)

冒泡排序(Bubble Sort)

时间:2024-10-19 19:16:41浏览次数:9  
标签:Sort sz arr int 元素 冒泡排序 排序 Bubble

新人博主,创作不易,希望得到各位看官的三连支持!!!

1、原理

        冒泡排序是一种简单的排序算法,属于交换排序的一种。它通过重复地遍历待排序的数列,比较相邻的元素,如果它们的顺序错误就将它们交换过来。这个过程会重复进行,直到没有需要交换的元素位置,即数列已经排序完成。

2、具体步骤

  1. 从头到尾遍历要排序的数列。
  2. 比较相邻的两个元素,如果前一个元素大于后一个元素,则交换它们。
  3. 一次遍历结束后,最后一个元素就是最大的元素。
  4. 对剩下的元素重复以上步骤,逐步将所有元素排序完成。

3、代码和原理的图解 

        下面是一串冒泡排序的代码:(将数组从小到大输出)

void bubble_sort(int arr[],int sz)
{
	
	
	for (int i = 0; i < sz; i++)			//遍历数组
	{
		for (int j = 0; j < sz-i; j++)	//冒泡排序趟数
		{
			if (arr[j] > arr[j + 1])
			{
				int tmp = arr[j];
				arr[j] = arr[j + 1];	//交换位置
				arr[j + 1] = tmp;
			}
		}
	}
}
#include <stdio.h>
int main()
{
	int arr[] = { 1,3,6,7,8,4,5,9,10,2 };
	int sz = sizeof(arr) / sizeof(arr[0]) - 1;
	//冒泡排序
	bubble_sort(arr,sz);	//数组首元素的地址
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

         上面是一串冒泡排序的代码,通过双层for循环实现,外层for循环遍历数组,内层for循环则是冒泡排序的实现。if语句用来判断后一位元素是否比前一位元素大,如果为否交换位置。下面我们通过图解来了解冒泡排序的实现。

PS:上面是每一次冒泡排序的过程的实现,由于时间问题后面的排序过程就不过多解释 。

4、总结

        冒泡排序的优点:简单易懂,适合编程的初学者;稳定性高,不需要申请额外的空间;适用于少量数据。

        冒泡排序的缺点:效率低下(时间复杂度为n^2),不适用于大量数据的情况;没有自适应性,无法有效利用已有的顺序信息。

        冒泡排序适合用于教学和学习基础的排序概念,但在实际应用中,由于其效率低下,通常不推荐用作大型数据集的排序方法。但是,在处理较小的或几乎有序的数组时,它仍然能够表现出一定的效果。

标签:Sort,sz,arr,int,元素,冒泡排序,排序,Bubble
From: https://blog.csdn.net/CxK6666667/article/details/143081832

相关文章

  • Java的Stream流编程的排序sorted方法里参数o1,o2分别代表什么?
    先说结论:在sorted方法中,o1是最后面的元素,o2是倒数第二个元素,以此类推,流是处理元素是从后面开始取值。  packagecom.br.itwzhangzx02.learn;     importorg.junit.Test;   importjava.util.ArrayList; importjava.util.List;......
  • Collections.sort多个字段排序
    //生效日期、操作时间倒序、机型组升序privatevoidsort(List<IntpathcostAreaGroupstVO>data){Comparator<Object>com=Collator.getInstance(java.util.Locale.CHINA);Collections.sort(data,newComparator<IntpathcostAreaGroupstVO>(){@Override......
  • 必学的排序算法——冒泡排序
    目录前言一、什么是冒泡排序二、冒泡排序的的基本步骤三、冒泡排序的特点四、冒泡排序算法图解五、经典例题1.合并两个有序数组代码题解2.元素计数代码题解3.最后一块石头的重量代码题解六、结语前言冒泡排序算法是必须掌握的一种基础算法,在一些比较出名的竞赛可......
  • Sorting a Grid
    怎么洛谷又没了。怕下次又忘了所以写。习惯了谎话,早已分不清真假。不妨给D的每一行染一个颜色,那么C每一行的是一种颜色即可。可以发现有\(n\)种颜色,每种颜色数量为\(m\)。每一行颜色不是一样的。考虑B如何一定合法。显然每一列不能有重复元素,等价于每一列有m种......
  • DeepSORT算法实现车辆和行人跟踪计数和是否道路违规检测(代码+教程)
    DeepSORT算法实现车辆和行人跟踪计数和是否道路违规检测(代码+教程)特征提取此处面对的场景是是交通摄像头下的马路场景,数据格式为视频流或者视频,所以我们要提取视频的第一帧作为背景来进行车道线的标定,运行extra.py文件即可提取第一帧背景图片。✍......
  • 冒泡排序 (Bubble Sort) 详解
    一、概述冒泡排序(BubbleSort)是一种基础的排序算法,属于交换排序的一种。它通过重复遍历要排序的数列,比较相邻的元素并交换它们的位置,逐步将最大的(或最小的)元素“冒泡”到数列的末端,从而完成排序。冒泡排序的工作原理非常直观易懂,尽管它的性能并不算最优,但作为入门级的排序算法,它能......
  • 冒泡排序、插入排序、选择排序、归并排序、快速排序算法(C++实现)
    文章目录一、冒泡排序上浮法冒泡排序(从小到大排序)下浮法冒泡排序(从大到小排序)二、选择排序三、插入排序四、归并排序五、快速排序参考一、冒泡排序冒泡排序应该算是最经典最简单的排序算法,我一开始学习排序算法就是从冒泡排序开始入门的。冒泡排序算法的基本思路:(......
  • java.util.Arrays#sort
    基本数据类型数组/***java.util.Arrays#sort(int[])*publicstaticvoidsort(int[]a){*DualPivotQuicksort.sort(a,0,a.length-1,null,0,0);//DualPivotQuicksort*}*/Obje......
  • java.util.Collections#sort(java.util.List<T>)
    java.util.ArrayList/java.util.LinkedList/***java.util.Collections#sort(java.util.List)*publicstatic<TextendsComparable<?superT>>voidsort(List<T>list){*list.sort(null);*......
  • C代码随笔——冒泡排序
    题目:对一串乱序数字排序并且进行重复元素去重冒泡排序的基本规则:        比较相邻的元素。如果第一个比第二个大(升序排序),就交换它们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。重复以上的步骤,除了最后已......