用冒泡排序法对数组中的元素排序

用冒泡排序法对数组中的元素排序

注:此处以升序排列举例(共10个元素)

2 ,4, 3, 5, 8, 6,1, 7, 9, 0
要将其升序排列:
1.将第一个元素与其后的每个元素进行比较
2与4比较:2 < 4
将这两个值交换:4,2,3,5,8,6,7,9,0
交换后2位于第二个元素位置处,2与3比较:2 < 3
交换:4,3,2,5,8,6,7,9,0

共比较了9次
(第一个元素共进行了9次比较,第二个元素共进行了8次比较,倒数第一个元素进行了1次比较)
此例子共有10个元素,每个元素要与其后的元素比较10-i-1次(i为之前已经进行过程1的元素个数,可针对过程1设置一个循环控制每个元素需要比较的次数,for(j=0;j<10-i-1;j++) )
共有num个元素,将一个元素进行num-i-1次比较

for (j = 0; j < num - i - 1; j++)
		{
			if (arr[j] > arr[j+1])
			{
				tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}
		}

2.将1中的方法循环
由于第一个元素与最后一个元素比较完成后,又进行第二个元素与其后的每个元素比较

直到倒数第二个元素与其后剩下的一个元素进行比较
即将过程1整体总共进行9次(最后一个元素不必进行过程1),则可在过程1的小循环外加大循环来使所有元素(除了最后一个元素)都能进行过程1
可设置i,for(i=0;i<10-1;i++)
冒泡排序函数如下:

void Bubble(int arr[10], int num)
{
	int i = 0;
	int j = 0;
	int tmp = 0;
	for (i = 0; i < num-1; i++)
	{
		for (j = 0; j < num - i - 1; j++)
		{
			if (arr[j] > arr[j+1])
			{
				tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}
		}
	}
}

其完整代码为:

#include<stdio.h>
#include<stdlib.h>
//冒泡排序法
void Bubble(int arr[10], int num)
{
	int i = 0;
	int j = 0;
	int tmp = 0;
	for (i = 0; i < num-1; i++)
	{
		for (j = 0; j < num - i - 1; j++)
		{
			if (arr[j] > arr[j+1])
			{
				tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}
		}
	}
}
void main()
{
	int arr[10] = { 2,4,3,5,8,6,1,7,9,0 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int i = 0;
	Bubble(arr, sz);
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	system("pause");
	return 0;
}

3.程序执行结果:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值