冒泡排序初理解及分享

一、定义

1.定义:

冒泡排序:1 ,4,3,2,5, 8 , 9, 10 十个数字,从第一个元素开始和相邻右侧元素比较,相邻两个元素依次比较,二者中大的换到右边,小的到左边,从第一个元素开始,比到倒数第二个元素9和10比较后,一轮结束,此时最右侧是一组数中的最大值,第二轮比较时只需要比较到第八个元素和第九个元素就行;以此类推,每次比较次数比上一轮少1。

例:第一个元素1开始:1和4比,1比4小,不换位置;接着第二个元素4开始:4和右侧3比较,4比3大,换位置;依次.....

2.自己理解:

     相当于是一排10个人,相邻的两个人依据身高互换位置,高的站在右边,矮的站在左边。重点是,在代码实现时,比较的时候时有方向有轮次的,第一轮从左到右结束后,开始第二轮。

思路:

           写在下方代码处,大家可以结合例题看。

二、应用举例

例题:

冒泡题:输入10个数,将它们存入数组,用冒泡法对其进行升序排序。

1.创建数组

  首先创建数组arr[10],并用for循环输入十个数;

#include<stdio.h>
int main()
{
	int arr[10];
	int  i = 0;
	int sz = sizeof(arr) / sizeof(arr[0])-1;//数组的最大下标
	for (i = 0; i <= sz; i++)
	{
		scanf("%d", &arr[i]);
	}
2.冒泡排序,对相邻数字按规则交换

sz=sizeof(arr)/sizeof(arr[0])-1  ://也就是数组的最大下标9

  由于需要不同轮次来排一次序,又循环次数确定,所以确定使用for(i = 0; i <= sz; i++)循环

 单次循环中,相邻数字比较,可通过循环,但循环次数会根据不同轮次发生改变,即sz -1 -i;因为sz-1-i:表示最大比较次数,第一个元素比较的时候,除了自己一共比较sz-1次,并且不同轮次比较后,已经确定最大数字,所以不用比较已经确定的,即几个轮次,也就少比较i次。

	for (i = 0; i <= sz; i++)//下面的sz-1-i的理解比较总要,在上面文字已经解释,大家可以看一下
	{
		int j = 0;
		for (j = 0; j <= sz - 1 - i; j++)//j最大为8,j+1最大9;所以不会越界
		{
			int tmp = 0;
			if (arr[j] > arr[j + 1])
			{
				tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}

		}
	}
  3.用循环输出
for (i = 0; i <= sz; i++)
{
	printf("%d ", arr[i]);
}

冒泡及选择做题总结(理解的关键点和易错点):

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值