冒泡算法:python/C++

1.冒泡排序

什么是冒泡排序:

使用冒泡排序算法对 n 个数据进行排序,实现思路是:从待排序序列中找出一个最大值或最小值,这样的操作执行 n-1 次,最终就可以得到一个有序序列。

比如有一个数组:14, 33, 27, 35, 10

1.比较14和33的大小显然后者更大,不需要交换它们的位置,序列不发生改变。

2.比较 33 和 27 的大小,前者大于后者,交换它们的位置,新的序列如下所示。

14 27 33 35 10

3.比较 33 和 35 的大小,后者更大,不需要交换它们的位置,序列不发生改变。

4.比较 35 和 10 的大小,前者大于后者,交换它们的位置,新的序列如下所示。

14 27 33 10 35

可以看到,序列中值最大的元素 35 被移动到了序列的末尾。整个查找最大值的过程中,最大的元素就像水里的气泡一样,一点一点地“冒”了出来,这也是将该算法命名为冒泡排序算法的原因。

C++:

#include<iostream>
using namespace std;

void bubbleSort(int arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (arr[j > arr[j + 1]) {
                int temp = arr[j];
                arr[j = arr[j + 1];
                arr[j + 1 = temp;
            }
        }
    }
}

int main() {
    int arr[] = {5, 6, 8, 4, 7, 78, 9, 66, 88, 56};
    int n = sizeof(arr) / sizeof(arr << endl;
    }

    system("pause");
    return 0;
}

这段代码中,bubbleSort函数是用来进行冒泡排序的。首先,我们定义了一个外层循环,用来控制比较的轮数。内层循环用来进行相邻元素的比较并交换。如果前一个元素比后一个元素大,则交换它们的位置。这样,每一轮比较结束后,最大的元素就会“冒泡”到数组的末尾。重复执行这个过程,直到所有元素都被排序好为止。

在main函数中,我们定义了一个包含10个元素的数组arr,并计算出数组的长度n。然后,调用bubbleSort函数对数组进行排序。最后,通过循环将排序后的数组输出到屏幕上。

 

Python:

def bubbleSort(arr):
    for i in range(1, len(arr)):
        for j in range(0, len(arr)-i):
           
            if arr[j > arr[j+1]: 
            # if arr[j < arr[j+1]: 
                arr[j], arr[j+1 = arr[j+1], arr[j]
    return arr

if __name__ == "__main__":
    nums = [1, 42, 65, 876, 34, 656, 4, 6757, 89, 24, 65, 42]
    print("start:", nums)
    print("冒泡排序:", bubbleSort(nums))

这段代码使用了两层循环来进行排序。外层循环控制排序的趟数,内层循环用于比较相邻元素的大小并进行交换。每一趟排序都会将当前未排序元素中的最大(或最小)元素冒泡到合适的位置。最终得到一个有序的数组。

在这个代码示例中,我们给定了一个初始数组nums,然后调用bubbleSort函数进行排序,并打印出排序后的结果。可以根据需要修改nums数组来进行不同的测试。

注意,在代码中有两处注释,分别用于控制升序和降序排序,你可以根据自己的需求选择适合的方式。

制作不容易,记得点赞,关注啊!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值