【数据结构与算法】排序算法之冒泡排序(C++、Python)

原理介绍:

假设有长度为n的数组a,按照从小到大的顺序进行排序。冒泡排序的思路为:首先从数组的第一个元素开始,对数组中相邻的两个元素进行比较大小。如果左边(即索引数字小的)元素的值大于右边的元素,则交换这两个元素在数组中的位置,一直到最后一个元素为止。此时数组最右边的元素就是该数组中所有元素的最大值。然后再对该数组中剩下的n-1个元素进行这样的迭代比较,直到从小到大排好序即可。
如图所示:
在这里插入图片描述

程序实现(Python):

# 冒泡排序法
def bubbleSort():                              # 小驼峰式命名法
    ls = [2, 1, 8, 3, 11, 6, 18, 7, 9, 4]
    n = len(ls)
    for i in range(n, 0, -1):
        for j in range(i):
            if(ls[j]>ls[j+1]):
                temp =ls[j]
                ls[j]=ls[j+1]
                ls[j+1]=temp
                if((j+1)==i-1):
                    break
            else:
                if ((j + 1) == i-1):
                    break
    return ls
t=bubbleSort()
print(t)

程序实现(C++):

//输入一组整数存入数组,把这组数按照从小到大的顺序进行排序——冒泡排序法!!!
#include<iostream>
#include<iomanip>
//# define N 10
const int M=10;      // 定义常量,
using namespace std;

int main()
{
    int i, j, flag, temp, a[M];
    cout << "请输入" << M << "个整数:" << endl;
    for (i = 0; i < M; i++)
        cin >> a[i];
    //对数组进行冒泡排序,
    flag = 1;
    for (i = 0; i < M - 1 && flag; i++)    //第一个循环控制排多少次,
    {
        flag = 0;                        //设置标志位,如果有元素交换,修改其值,
        for(j=0;j<M-1-1;j++)              //第二个循环控制每排一次时,未排好的元素之间的交换(元素越来越少)。
            if (a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
                flag = 1;
            }
    }
    cout << "输出排序后的数组元素:" << endl;
    for (i = 0; i < M; i++)
        cout << setw(5) << a[i];
    cout << endl;
    return 0;
}

其他python写法

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值