经典算法:冒泡排序

  1. 冒泡排序

  2. 今天给大家介绍的是C语言的经典小白算法---------冒泡排序,此算法的原理类似于烧开水的泡泡,一般大的泡泡会比较快往上走,小的则慢点浮起,因此形象的称为冒泡排序。此处关键为弄清楚比较的轮数和每轮比较的数的个数,大的数会往右边排,形成从小到达的排序,另外的关键点在于定义一个中间值来作为数的中间站,使得数的位置能够顺畅的交换。

  3. 关键:(1)弄清楚比较的轮数和每轮比较的数的个数

                    (2)定义一个中间值来作为数的中间站

#include <stdio.h>


int main()
{
	int i;//比较的轮数
	int j;//每轮比较的次数
	int med;//替换的中间数据
	int rst[5];  //定义数组rst含有5个元素
	printf("请输入5个数: ");  //打印这句话
	for(i = 0; i < 5; i++)  //只能有5个元素所以for循化找出5个数
	{
		scanf("%d", & rst[i]);  //将输入的5个数给rst数组的元素赋值
	}

	for(i = 0; i < 4; i++)  //一共五个数需要进行四轮比较才可以得出最终值
	{
		for(j = 0; j < 4 - i; j++)/*一共5个数需要比较四次,每一轮比较少一次比较的次数,比如第一轮比较需要比较四次,
									最终最小值就在最后一位元素确定,第二轮比较就只有四个数比较三次*/
		{
			if(rst[j] < rst[j+1])//if语句进行比较
			{
				med = rst[j];  //条件成立把当前元素给中间值
				rst[j] = rst[j + 1];//把后一位元素给当前元素
				rst[j + 1] = med;  //把中间值给后一位元素,这时后一位元素为较小值
			}
		}
	}
	printf("排序后的结果为:");//打印这句话

	for(i = 0; i < 5; i++)//for语句将得到的数组排序打印
	{
		printf("%d",rst[i]);
	}

	printf("\n");//换行
	return 0;
}

99 10 33 77 2

思路:在5个数中通过两两比较,找到最大的数,放到这5个数中的

最右边

     在剩下的四个数中两两比较,找到最大的数,放到这四个数中的最右边

     在剩下的三个数中两两比较。。。。。。。。。。。。。。。。

     在剩下的两个数中两两比较。。。。。。。。。。

(定义好int i, j;i代表比较趟数,j代表每趟比较次数)

第一趟:将5个数中最大的数移动到了最右边

第一次比较:10 99 33 77 2

第二次比较:10 33 99 77 2

第三次比较:10 33 77 99 2

第四次比较:10 33 2 99

第二趟:将4个数中最大的数移动到最右边

   第一次比较:10 33 77 2

   第二次比较:10 33 77 2

   第三次比较:10 33 2 77

第三趟:将3个数中最大的数移动到最右边

   第一次比较:10 33 2

   第二次比较:10 2 33

第四趟:将2个数中最大的数移动到最右边

   第一次比较:2 10

最终结果:2 10 33 77 99

For(i = 0; i < 4; i++)

{

   For(j = 0; j < 4-i; j++)

{

    If(Arr[j] > arr[j+1])

{

     Int tmp = arr[j];

     Arr[j] = arr[j+1];

     Arr[j+1] = tmp;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值