冒泡排序

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

#include <stdio.h>

/*@ name        :bubbleSort
 * @brief  		 :十进制转十六进制
 * @param  		 :@int buf[] :需要进行冒泡排序的数组
 * 				 :@int bufsize   :数组的容量
 * @retval 		 :
 * @date   		 :2024/05/01
 * @version		 :1.0 :版本
 * @note   		 :
 */

//冒泡排序 ,指的是元素两两之间进行比较交换,需要比较n轮,每轮需要比较m次,从左向右升序
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.数组元素两两之间进行比较交换 buf[0] buf[1]   buf[1] buf[2]
			if (buf[m] > buf[m+1])
			{
				temp  	= buf[m];  //备份前一个
				buf[m]	= buf[m+1];//把后面交换到前面
				buf[m+1]= temp;	   //把前面交换到后面
			}
		}
	}
}


int main(int argc, char const *argv[])  
{  
    // 定义一个整型数组存储10个整数(但实际上这里只有9个元素)  
    int buf[9] = {14, 23, 12, 5, 8, 3, 9, 10, 33};  
    int size = sizeof(buf) / sizeof(buf[0]); // 获取数组大小  
    printf("原数组元素:");
    for (int j = 0; j < size; ++j)  
    {  
        printf("%d ", buf[j]);  
    }  
    printf("\n");  
    
    // 调用冒泡排序函数  
    bubbleSort(buf, bufsize);  
    printf("冒泡排序后的数组元素:");
    // 打印排序后的数组  
    for (int i = 0; i < size; ++i)  
    {  
        printf("%d ", buf[i]);  
    }  
    printf("\n");  
 
    return 0;  
}
posted @ 2024-05-01 22:42  小懿同学  阅读(14)  评论(0)    收藏  举报