惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
月光博客
月光博客
WordPress大学
WordPress大学
C
Cisco Blogs
Recent Commits to openclaw:main
Recent Commits to openclaw:main
博客园 - 【当耐特】
大猫的无限游戏
大猫的无限游戏
The GitHub Blog
The GitHub Blog
Google DeepMind News
Google DeepMind News
The Cloudflare Blog
有赞技术团队
有赞技术团队
Microsoft Azure Blog
Microsoft Azure Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
小众软件
小众软件
H
Heimdal Security Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
W
WeLiveSecurity
量子位
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
F
Fortinet All Blogs
T
Threat Research - Cisco Blogs
Attack and Defense Labs
Attack and Defense Labs
P
Privacy & Cybersecurity Law Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
NISL@THU
NISL@THU
Forbes - Security
Forbes - Security
L
Lohrmann on Cybersecurity
C
CERT Recently Published Vulnerability Notes
L
LINUX DO - 热门话题
Google Online Security Blog
Google Online Security Blog
S
Security Affairs
V2EX - 技术
V2EX - 技术
TaoSecurity Blog
TaoSecurity Blog
N
News and Events Feed by Topic
N
News | PayPal Newsroom
S
Security @ Cisco Blogs
宝玉的分享
宝玉的分享
Project Zero
Project Zero
The Hacker News
The Hacker News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
PCI Perspectives
PCI Perspectives
G
GRAHAM CLULEY
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Y
Y Combinator Blog
N
Netflix TechBlog - Medium
S
Schneier on Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - 聂微东

青空之蓝

[青空之蓝-2023] - 色彩 | 青空之蓝 [青空之蓝-2022] - 平静 | 青空之蓝 [青空之蓝-2021] - 远望 | 青空之蓝 浅谈垃圾回收 | 青空之蓝 浅谈泛型擦除 | 青空之蓝 浅谈单点登录 | 青空之蓝 使用 Kotlin 编写 Spring 测试 | 青空之蓝 设计模式系列文章 | 青空之蓝 从零实现一个 Java 微框架 - IoC | 青空之蓝 从零实现一个 Java 微框架 - 前言 | 青空之蓝 浅谈 JVM:类加载 | 青空之蓝 浅谈 IO | 青空之蓝 浅谈并发:synchronized & ReentrantLock | 青空之蓝 浅谈并发:CAS & AQS | 青空之蓝 浅谈并发:ThreadLocal | 青空之蓝 浅谈并发:三大特性 | 青空之蓝 浅谈组合注解 & 注解别名 | 青空之蓝 [青空之蓝-2020]-迷茫 | 青空之蓝 Java 系列文章 | 青空之蓝 HTTP 系列文章 | 青空之蓝 浅谈 EatWhatYouKill | 青空之蓝 浅谈可扩展线程池 | 青空之蓝 聊聊写框架 | 青空之蓝 聊聊现状-[2020-09] | 青空之蓝 浅谈并发:锁 | 青空之蓝 浅谈并发:基础 | 青空之蓝 浅谈缓存 | 青空之蓝 无须定义类,Spring 快速注入 Json 参数 | 青空之蓝 浅谈 Proxy 和 Aop | 青空之蓝 从零实现一个 PHP 微框架 - 初始化请求 | 青空之蓝 为 Vue3 添加一个简单的 Store | 青空之蓝 从零实现一个 PHP 微框架 - 服务提供者 | 青空之蓝 WSL2 踩坑记录 | 青空之蓝 浅谈浏览器Event Loop [更新] | 青空之蓝 从零实现一个 PHP 微框架 - Bootstrap 启动加载 | 青空之蓝 从零实现一个 PHP 微框架 - IoC 容器 | 青空之蓝 从零实现一个 PHP 微框架 - PSR & Composer | 青空之蓝 从零实现一个 PHP 微框架 - 前言 | 青空之蓝 MVVM 简单实现 | 青空之蓝 浅谈 DI 和 IoC | 青空之蓝 中间件实现 [PHP] | 青空之蓝 告别 Windows 终端的难看难用,打造好用的 PowerShell | 青空之蓝 VSCode Java输出中文乱码问题解决[更新] | 青空之蓝 浅谈浏览器渲染 | 青空之蓝 Vue-Cli@2 项目迁移日志 | 青空之蓝 Laragon & Scoop 集成踩坑记录 | 青空之蓝 「一行代码」优雅管理 Windows 软件 | 青空之蓝 [青空之蓝-2019]-年度总结 | 青空之蓝 为Vue添加简单的Store | 青空之蓝 为React添加简单的Store | 青空之蓝 为Vuex添加同步Action | 青空之蓝 浅谈B+树 | 青空之蓝 浅谈跳表 | 青空之蓝 浅谈数据库索引 | 青空之蓝 MySQL事务隔离 | 青空之蓝 算法复杂度分析(1) | 青空之蓝 一年来的经验总结 | 青空之蓝 Acrylic - VSCode Extension | 青空之蓝 ace编辑器设置惯性滚动 | 青空之蓝 Java二叉树实现 | 青空之蓝 Java图实现 | 青空之蓝 为apt方式安装的nginx重新编译增加WebDAV | 青空之蓝 XK-Editor - 一个支持富文本和Markdown的编辑器 | 青空之蓝 JS生成列表树 | 青空之蓝 Laravel生成目录树 | 青空之蓝 XK-Note - 集各种神奇功能的云笔记 | 青空之蓝 PHP GD生成验证码 | 青空之蓝 PHP GD图片处理[转换格式-水印-缩略图] | 青空之蓝 Origami - 简洁轻快的WordPress主题 | 青空之蓝 为WordPress启用WorkBox | 青空之蓝 [青空之蓝-2018]-年度总结 | 青空之蓝 VSCode Java手动导入jar和源码包 | 青空之蓝 Windows IP变化自动发送邮件 | 青空之蓝 C链表实现重制版 | 青空之蓝 C 结构体的定义和使用 | 青空之蓝 图的搜索(遍历) - BFS & DFS | 青空之蓝 Java链表实现 | 青空之蓝 C 快速排序 | 青空之蓝 C 插入排序 | 青空之蓝 C 归并排序 | 青空之蓝 C语言链表实现 | 青空之蓝 VSCode配置Java调试环境[Windows] | 青空之蓝 C 选择排序 | 青空之蓝 VSCode配置PHP调试环境[Windows] | 青空之蓝 VSCode配置C/C++ GDB调试环境[Windows] | 青空之蓝 WordPress友情链接模板 | 青空之蓝 Intel Optane 傲腾内存体验 | 青空之蓝 Mysql双机热备实战 | 青空之蓝 博客一年记录 | 青空之蓝 为WordPress启用Service Worker | 青空之蓝 Bing每日一图API | 青空之蓝 iframe延迟加载 | 青空之蓝 写在2018年高考前 | 青空之蓝 The Fox主题汉化分享 | 青空之蓝 [青空之蓝-2017]-崭新 | 青空之蓝 本博客评论规则 | 青空之蓝 世界,您好! | 青空之蓝
C 冒泡排序 | 青空之蓝
Otstar Lin · 2018-10-05 · via 青空之蓝

冒泡排序,在学到循环和数组的时候肯定会接触到这个最基本的排序算法。为什么这种算法要叫做冒泡排序呢?是因为这个排序算法有点像水泡向上冒。在大学计算机的课程中一定会讲到的排序方法,博主我作为计科的一员也是要学习的,先行偷学 ing (逃

思想与举例

冒泡排序的基本思想就是不断比较相邻的两个数,让较大的元素不断地往后移。经过一轮比较,就选出最大的数;经过第 2 轮比较,就选出次大的数,以此类推。

下面以6 2 5 3进行举例说明

第一轮排序

  1. 6 2 5 3(初始)
  2. 2 6 5 3(2 6 交换)
  3. 2 5 6 3(5 6 交换)
  4. 2 5 3 6(3 6 交换)

第二轮排序

  1. 2 5 3 6(初始)
  2. 2 5 3 6(2 5 不变)
  3. 2 3 5 6(3 5 交换)

至此由小到大的排序已经完成。

算法总结与实现

首先创建数组nums[N]然后进行N-1轮的比较,然后在每轮中进行逐个比较,若不符合大小排序则进行交换,直到所有数符合大小排序

#include <stdio.h>
#define N 10  //要比较的数字的数目
//冒泡排序控制Demo
//冒泡排序结果和方式
//结果,使不按大小排序的数组,通过排序后按大小排列
//方式,遍历比较
int main(int argc, char const *argv[])
{
    int i, j, temp, n;
    int nums[N]; //要进行排序的数组
    printf ("请输入10个数字\n")
    for (i = 0; i < N; i++) //循环输入数字
    {
        scanf ("%d", &nums[i]);
    }

    //
    //降序排列
    //
    //外层循环
    for (i = 0; i < N - 1; i++) //遍历轮数,数组有多少就遍历 i-1 轮
    {
        //内层循环
        for (j = 0; j < N - 1 - i; j++) //遍历一轮,并进行循环
        {
            //判断后面一个数是否大于前面一个数,是的话就进行交换
            if (nums[j] < nums[j + 1])
            {
                temp = nums[j];
                nums[j] = nums[j + 1];
                nums[j + 1] = temp;
            }
        }
    }

    //输出数组
    printf ("降序排列:\n");
    for (n = 0; n < 10; n++)
    {
        printf ("%d\n", nums[n]);
    }
    printf ("\n");

    //
    //升序排列
    //
    //外层循环
    for (i = 0; i < N - 1; i++) //遍历轮数,数组有多少就遍历 i-1 轮
    {
        //内层循环
        for (j = 0; j < N - 1 - i; j++) //遍历一轮,并进行循环
        {
            //判断后面一个数是否大于前面一个数,是的话就进行交换
            if (nums[j] > nums[j + 1]) //升降序通过这个大于小于号进行控制
            {
                temp = nums[j];
                nums[j] = nums[j + 1];
                nums[j + 1] = temp;
            }
        }
    }

    //输出数组
    printf ("升序排列:\n");
    for (n = 0; n < N; n++)
    {
        printf ("%d\n", nums[n]);
    }

    return 0;
}
#include <stdio.h>
#define N 10  //要比较的数字的数目
//冒泡排序控制Demo
//冒泡排序结果和方式
//结果,使不按大小排序的数组,通过排序后按大小排列
//方式,遍历比较
int main(int argc, char const *argv[])
{
    int i, j, temp, n;
    int nums[N]; //要进行排序的数组
    printf ("请输入10个数字\n")
    for (i = 0; i < N; i++) //循环输入数字
    {
        scanf ("%d", &nums[i]);
    }

    //
    //降序排列
    //
    //外层循环
    for (i = 0; i < N - 1; i++) //遍历轮数,数组有多少就遍历 i-1 轮
    {
        //内层循环
        for (j = 0; j < N - 1 - i; j++) //遍历一轮,并进行循环
        {
            //判断后面一个数是否大于前面一个数,是的话就进行交换
            if (nums[j] < nums[j + 1])
            {
                temp = nums[j];
                nums[j] = nums[j + 1];
                nums[j + 1] = temp;
            }
        }
    }

    //输出数组
    printf ("降序排列:\n");
    for (n = 0; n < 10; n++)
    {
        printf ("%d\n", nums[n]);
    }
    printf ("\n");

    //
    //升序排列
    //
    //外层循环
    for (i = 0; i < N - 1; i++) //遍历轮数,数组有多少就遍历 i-1 轮
    {
        //内层循环
        for (j = 0; j < N - 1 - i; j++) //遍历一轮,并进行循环
        {
            //判断后面一个数是否大于前面一个数,是的话就进行交换
            if (nums[j] > nums[j + 1]) //升降序通过这个大于小于号进行控制
            {
                temp = nums[j];
                nums[j] = nums[j + 1];
                nums[j + 1] = temp;
            }
        }
    }

    //输出数组
    printf ("升序排列:\n");
    for (n = 0; n < N; n++)
    {
        printf ("%d\n", nums[n]);
    }

    return 0;
}

C 冒泡排序

https://blog.ixk.me/post/c-bubble-sort
  • 许可协议

    BY-NC-SA

  • 本文作者

    Otstar Lin

  • 发布于

    2018/10/05

转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!

C 选择排序VSCode配置PHP调试环境[Windows]

HomeGitHubStatus

Copyright © 2017-2026 Otstar Lin

Theme Coline by Otstar LinPowered by Next.js