冒泡排序

数据结构

冒泡排序

1.冒泡算法思想:

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

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

2.冒泡算法代码:

/*****************************************************************************************************************
*	
*	file name	:	BubbleSort.c
*	author	 	:	cnzycwp@126.com
*	data  	 	:	2024/05/06
*	function	:	冒泡算法
*	note	 	:	None
* 	
*  	CopyRight (c)	2024	cnzycwp@126.com 	All Right Reseverd
*
* ****************************************************************************************************************/

#include<stdio.h>

/*****************************************************************************************************************
*	
*	func name	:	BubbleSort
*	function	:	冒泡排序:交换类排序,比较一轮,选出最大或最小值
*	argument	:
*                   		@temp :临时储存交换值
*	retval		:	void
*	note		:	None
*	author	 	:	cnzycwp@126.com
*	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

posted @ 2024-05-06 19:17  陳文鹏  阅读(24)  评论(0编辑  收藏  举报