冒泡排序的两种方式

冒泡排序的方式有两种:


冒泡排序方法一:

将n[i]这个位置的数与它后面的数进行比较,如果n[i]>n[i+x],那么说明n[i+x]更小,因此将n[i]和n[i+x]的数互换位置。

互换位置后,n[i]便是一个更小的数。接着用新的n[i]与后面的数比较,可以连续得到更小的数,直到取得最小数。

如果i==0,那么最小的数便排列到了序列的最前面n[0]的位置。

因为n[0]是最小的数,那么接下来就要找到一个第二小的数放置在n[1]的位置。

依次循环后,便得到一个升序序列。


代码如下:

#include "stdafx.h"
#include <iostream>

using namespace std;
void Swap(int n[], int i, int j);

int main()
{
	int n[6] = { 6,8,1,5,3,4 };

	for (int i = 0; i < 5; i++)	
	{
		for (int j = i + 1; j < 5; j++)	
		{
			if (n[i] < n[j])
			{
				Swap(n, i, j);
			}
		}
	}

	for (int i = 0; i < 5; i++)
	{
		cout << n[i];
	}

	cin.get();
        return 0;
}

void Swap(int n[], int i, int j)
{
	int temp = n[i];
	n[i] = n[j];
	n[j] = temp;
}



冒泡排序算法二:

将n[i]与n[i+1]进行比较,如果n[i]>n[i+1]为true,那么交换这两个数的位置。

现在n[i+1]是较大的那个数了。

接下来拿n[i+1]和n[i+2]进行比较,如果n[i+1]>n[i+2]为true,则重复上步骤。如果为false,那么n[i+2]原本就是较大的数。

接下来拿n[i+2]再进行比较(无论前面是否交换数,最新的这个数始终是较大的。)。

因此,最后较大的数,就被交换到了数组末尾。


#include "stdafx.h"
#include <iostream>

using namespace std;
void Swap(int n[], int i, int j);

int main()
{
	int n[6] = { 6,8,1,5,3,4 };

	for (int i = 0; i < 5; i++)	
	{
		for (int j = 0; j < 5 - i; j++)	
		{
			if (n[j] > n[j + 1])
			{
				Swap(n, j, j + 1);
			}
		}
	}

	for (int i = 0; i < 5; i++)
	{
		cout << n[i];
	}

	cin.get();
        return 0;
}

void Swap(int n[], int i, int j)
{
	int temp = n[i];
	n[i] = n[j];
	n[j] = temp;
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天丛云索隆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值