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

冒泡排序

时间:2024-05-06 19:22:34浏览次数:18  
标签:int 交换 冒泡排序 冒泡 printf buf

数据结构

冒泡排序

1.冒泡算法思想:

冒泡排序也被称为起泡排序,该排序算法的原理就是经过一系列的*交换*实现的,也就是用第一个元素和第二个元素进行比较,如果第一个元素的值大于第二个元素则两者位置互换,否则不交换。然后第二个元素和第三个元素比较.......最后序列中最大的元素被交换到了序列的尾部,这样就完成了一轮交换,经过n轮交换之后,就可以得到一个有序序列。

当然,除了从左向右交换的方案外,另外一种冒泡排序就是重复“从序列右边开始比较相邻两个数字的大小,再根据结果交换两个数字的位置”这一操作的算法,也就是从右往左交换。在这个过程中,数字会像泡泡一样,慢慢从右往左“浮”到序列的顶端,所以这个算法才被称为“冒泡排序”。

2.冒泡算法代码:

/*****************************************************************************************************************
*	
*	file name	:	BubbleSort.c
*	author	 	:	[email protected]
*	data  	 	:	2024/05/06
*	function	:	冒泡算法
*	note	 	:	None
* 	
*  	CopyRight (c)	2024	[email protected] 	All Right Reseverd
*
* ****************************************************************************************************************/

#include<stdio.h>

/*****************************************************************************************************************
*	
*	func name	:	BubbleSort
*	function	:	冒泡排序:交换类排序,比较一轮,选出最大或最小值
*	argument	:
*                   		@temp :临时储存交换值
*	retval		:	void
*	note		:	None
*	author	 	:	[email protected]
*	data  	 	:	2024/05/06
* 	
*
* ****************************************************************************************************************/

void BubbleSort(int buf[],int bufsize)
{
    //为了临时储存交换值
    int temp = 0;
    
    //1.循环比较元素,需要比较n轮
    for (int n = 1; n < bufsize; n++)
    {
        //2.每轮需要比较m次
        for (int m = 0; m < bufsize-n; m++)
        {
            //3.数组元素两两之间进行比较交换
            if (buf[m] > buf[m+1])
            {
                temp = buf[m];          //备份前一个
                buf[m] = buf[m+1];      //把后面交换到前面
                buf[m+1] = temp;        //把前面交换到后面
            }
            
        }
        
    }
    
}
int main()
{
    int buf[10] = {5,6,4,25,85,32,1,56,8,10};
    printf("冒泡前的数组buf为:\n");
    for (int i = 0; i < 10; i++)
    {
        printf("%d->",buf[i]);
    }
    printf("\n");
    BubbleSort(buf,10);
    printf("冒泡后的数组buf为:\n");
    for (int i = 0; i < 10; i++)
    {
        printf("%d->",buf[i]);
    }
    printf("\n");
    return 0;
}

3.冒泡算法验证:

image

标签:int,交换,冒泡排序,冒泡,printf,buf
From: https://www.cnblogs.com/cwp-home/p/18175700

相关文章

  • dotnet 冒泡排序
    //Seehttps://aka.ms/new-console-templateformoreinformationusingConsoleApp1;Console.WriteLine("Hello,World!");//我委托你办事情,作为委托方只要满足被委托方的规则的事情(也就是方法),他都可以帮我解决,我需要给它提供金钱(也就是参数)。//总结:就是一些常用(公用的......
  • 冒泡排序
    冒泡排序:也就是用第一个元素和第二个元素进行比较,如果第一个元素的值大于第二个元素则两者位置互换,否则不交换。然后第二个元素和第三个元素比较.......最后序列中最大的元素被交换到了序列的尾部,这样就完成了一轮交换,经过n轮交换之后,就可以得到一个有序序列。#include<stdio.h>......
  • 冒泡排序
    /*******************************************************************************************************@filename: :BubbleSort*@brief :冒泡排序*@author :[email protected]*@date :2024/04/30*@version1.0 :V1.0*@prop......
  • 二分法,冒泡排序
    Ⅰ算法之二分法算法其实就是解决问题的有效方法'''二分法使用有前提:数据集必须有先后顺序(升序,降序)''''''二分法原理 获取数据集中间的元素比对大小 如果中间元素大于目标数据那么保留数据集的左边一半 如果中间元素小于目标数据那么保留数据集的右边一半 针对剩......
  • 冒泡排序
    packageArray;importjava.util.Arrays;//冒泡排序//1.比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置//2.每一次比较,都会产生一个最大,或者最小的数字//3.下一轮测试可以少一次排序//4.依次循环,直到结束publicclassDemo06{publicstaticvoid......
  • 排序1-冒泡排序
    排序1-冒泡排序冒泡排序的次数是递减的,第一次确定了最大元素的位置,所以第二次只需要进行n-1次排列,第二次确定了第二大元素的位置,所以第三次只需要进行n-2次排列,以此类推for(inti=0;i<len;i++){//每次遍历的次数是递减的//所以j=len-1-i......
  • js带注释的冒泡排序算法
    一、简述冒泡排序(BubbleSort)是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果二者的顺序(如从大到小、首字母从A到Z)错误就交换。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法......
  • 常见的排序算法——冒泡排序(二)
    本文记述了冒泡排序微小改动的基本思想和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。◆思想更少的比较可以节省一定的时间,此改动可以减少更小范围的比较。(把水平陈列的数组逆时针旋转90°后,有助于理解后续的内容。)将包含顶层以下的所有元素作为待排序范围......
  • 常见的排序算法——冒泡排序
    本文记述了冒泡排序的基本思想和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。◆思想(把水平陈列的数组逆时针旋转90°后,有助于理解后续的内容。)将包含顶层以下的所有元素作为待排序范围,将该范围以上的所有元素作为已排序范围。通过一一比较相邻的两个元素,自......
  • Java入门基础知识第八课(数组)——冒泡排序、Arrays工具类
    前面二白讲了关于数组的概念、语法以及简单的输入输出,实际上关于数组的知识还有很多,接下来咱们讲一下冒泡排序以及一些常用的Arrays工具类,需要记忆的知识很多,而且容易混淆。一、冒泡排序简介(原理)升序为例:从头开始,每次比较相邻两数小的交换到前面每轮结束后最大的数交换到......