冒泡排序--让数逆向移动

本文详细展示了如何使用冒泡排序算法对整数数组进行从小到大和从大到小的排序。提供了两种冒泡排序的实现,分别用于升序和降序排列,并给出了示例代码。此外,还包含一个简单的测试案例,演示了如何对原始数据进行排序并打印排序结果。
摘要由CSDN通过智能技术生成

从小到大排序

//头文件
#include <vector>
using namespace std;
//从小到大排序
void bubbleSort_MinToMax(vector<int> &numberList)
{
	int N = numberList.size();
	for (int i = 1; i < N; i++)
	{
		for (int j = 0; j < N - i; j++)
		{
			if (numberList[j] > numberList[j + 1])
			{
				//交换
				int buffer = numberList[j];
				numberList[j] = numberList[j + 1];
				numberList[j + 1] = buffer;
			}
		}
	}
}

从大到小排序:

//头文件
#include <vector>
using namespace std;
//从大到小排序
void bubbleSort_MaxToMin(vector<int> &numberList)
{
	int N = numberList.size();
	for (int i = 1; i < N; i++)
	{
		for (int j = 0; j < N - i; j++)
		{
			if (numberList[j] < numberList[j + 1])
			{
				//交换
				int buffer = numberList[j];
				numberList[j] = numberList[j + 1];
				numberList[j + 1] = buffer;
			}
		}
	}
}
#include <iostream>
#include <vector>
using namespace std;
//从小到大排序
void bubbleSort_MinToMax(vector<int> &numberList)
{
	int N = numberList.size();
	for (int i = 1; i < N; i++)
	{
		for (int j = 0; j < N - i; j++)
		{
			if (numberList[j] > numberList[j + 1])
			{
				//交换
				int buffer = numberList[j];
				numberList[j] = numberList[j + 1];
				numberList[j + 1] = buffer;
			}
		}
	}
}
//从大到小排序
void bubbleSort_MaxToMin(vector<int> &numberList)
{
	int N = numberList.size();
	for (int i = 1; i < N; i++)
	{
		for (int j = 0; j < N - i; j++)
		{
			if (numberList[j] < numberList[j + 1])
			{
				//交换
				int buffer = numberList[j];
				numberList[j] = numberList[j + 1];
				numberList[j + 1] = buffer;
			}
		}
	}
}

int main()
{
	//输入原始数据
	//原始数据为:2 9 4 3 6 0 5 8 7 1
	vector<int> numberList;
	numberList.push_back(2);
	numberList.push_back(9);
	numberList.push_back(4);
	numberList.push_back(3);
	numberList.push_back(6);
	numberList.push_back(0);
	numberList.push_back(5);
	numberList.push_back(8);
	numberList.push_back(7);
	numberList.push_back(1);
	//打印原始数据
	int N = numberList.size();
	for (int i = 0; i < N; i++)
	{
		cout << numberList[i];
		if (i == N - 1)
		{
			cout << endl;
		}
		else
		{
			cout << " ";
		}
	}
	//冒泡排序
	bubbleSort_MinToMax(numberList);//从小到大
	//bubbleSort_MaxToMin(numberList);//从大到小
	//打印排序后的数据
	for (int i = 0; i < N; i++)
	{
		cout << numberList[i];
		if (i == N - 1)
		{
			cout << endl;
		}
		else
		{
			cout << " ";
		}
	}
	//system("pause");//vs环境下需要加上这句
	return 0;
}
#include <stdio.h>
int main(){
    int nums[10] = {4, 5, 2, 10, 7, 1, 8, 3, 6, 9};
    int i, j, temp, isSorted;
   
    //优化算法:最多进行 n-1 轮比较
    for(i=0; i<10-1; i++){
        isSorted = 1;  //假设剩下的元素已经排序好了
        for(j=0; j<10-1-i; j++){
            if(nums[j] > nums[j+1]){
                temp = nums[j];
                nums[j] = nums[j+1];
                nums[j+1] = temp;
                isSorted = 0;  //一旦需要交换数组元素,就说明剩下的元素没有排序好
            }
        }
        if(isSorted) break; //如果没有发生交换,说明剩下的元素已经排序好了
    }

    for(i=0; i<10; i++){
        printf("%d ", nums[i]);
    }
    printf("\n");
   
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

梖梖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值