冒泡排序详解

算法思想

1)两两相邻的元素进行比较;

  升序排列:若前面元素大于后面元素就交换两个元素的位置,最终结果是最大的一个元素移动到了最后的位置

  降序排列:若前面元素小于后面元素就交换两个元素的位置,最终结果是最小的一个元素移动到了最后的位置。 

2)如果有 n 个元素那么【冒泡操作】重复 n-1 趟排序即可排序完成。

 算法图解

 学习过程思想

1. 一共两层 for 循环

2. 第一层for循环是控制进行几趟冒泡的,所以循环的次数的是待排序序列元素个数减一次。

3.第二层for循环是控制每一趟冒泡两两元素间进行比较的,相邻两元素比较,若反序则交换。

  注意:j从0到n-1,j+1从1到n这个地方我第一次忽略-1,即j从0到n,那么j+1就会超过了排序序列的最大长度。

代码实践

复制代码
#include <stdio.h>

int main() {
    int arr[10];
    printf("请输入10个数据:");
    for (int i = 0; i < 10; ++i) {
        scanf("%d", &arr[i]);
    }
    int temp;
    for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 10 - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }

    printf("升序输出数组:");
    for (int i = 0; i < 10; ++i) {
        printf("%d ", arr[i]);
    }
    return 0;
}
复制代码

运行结果

 

posted @   帅帅的编程之路  阅读(70)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
点击右上角即可分享
微信分享提示