Jacky's Blog Jacky's Blog
  • 首页
  • 关于
  • 项目
  • 大事记
  • 留言板
  • 友情链接
  • 分类
    • 干货
    • 随笔
    • 项目
    • 公告
    • 影视
    • 尝鲜
    • 算法
    • 深度学习
首页 › 算法 › C 冒泡排序

C 冒泡排序

Jacky
10月 2, 2019算法
6,806 2 3

冒泡排序的原理:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
for (int a = 0; a < length - 1; a++) {
            for (int b = 0; b < length - 1 - a; b++) {
                if (input[b] > input[b+1]) {
                    tmp = input[b+1];
                    input[b+1] = input[b];
                    input[b] = tmp;
                }
            }
}

示例程序

//
//  main.c
//  冒泡排序(数组)
//
//  Created by Jacky on 2020/3/15.
//  Copyright © 2020 Jacky. All rights reserved.
//

/*
 题目描述
 输入n个数字,使用冒泡排序对其进行升序排序。
 
 输入
 测试次数T
 
 每组测试数据格式为:数字个数n,后跟n个数字。假设n<20。
 
 输出
 对每组测试数据,输出冒泡排序的每趟排序结果
 
 样例输入
 2
 5 10 4 43 1 2
 10 20 123 12 2 434 54 2 45 23 -10
 样例输出
 4 10 1 2 43
 4 1 2 10 43
 1 2 4 10 43
 1 2 4 10 43
 20 12 2 123 54 2 45 23 -10 434
 12 2 20 54 2 45 23 -10 123 434
 2 12 20 2 45 23 -10 54 123 434
 2 12 2 20 23 -10 45 54 123 434
 2 2 12 20 -10 23 45 54 123 434
 2 2 12 -10 20 23 45 54 123 434
 2 2 -10 12 20 23 45 54 123 434
 2 -10 2 12 20 23 45 54 123 434
 -10 2 2 12 20 23 45 54 123 434
 */

#include <stdio.h>

void printArray(int array[], int length);

int main() {
    int t, input[20], length, tmp;
    scanf("%d", &t);
    for (int i = 0; i < t; i++) {
        scanf("%d", &length);
        for (int j = 0; j < length; j++) {
            scanf("%d", input + j);
        }
        
        for (int a = 0; a < length - 1; a++) {
            for (int b = 0; b < length - 1 - a; b++) {
                if (input[b] > input[b+1]) {
                    tmp = input[b+1];
                    input[b+1] = input[b];
                    input[b] = tmp;
                }
            }
            printArray(input, length);
        }
    }
    return 0;
}

void printArray(int array[], int length) {
    for (int i = 0; i < length; i++) {
        printf("%d ", array[i]);
    }
    printf("\n");
}

文章最后修订于 2020年8月31日

3
本文系作者 @Jacky 原创发布在 Jacky's Blog。未经许可,禁止转载。
南京之行
上一篇
Python 三位一并法
下一篇
评论 (2)
再想想
  • 老板来罐冰阔落

    学到了 感谢大佬😘

    1年前
    • Jacky

      @老板来罐冰阔落: 军er

      1年前
近期评论
  • Jacky发表在《iPhone 8 Plus》
  • Jacky发表在《macOS 为树莓派安装 Raspbian 系统》
  • Tony发表在《iPhone 8 Plus》
  • Tony发表在《macOS 为树莓派安装 Raspbian 系统》
  • Jacky发表在《友情链接》
二实起床铃
https://dl.jackyu.cn/blog/2016/10/2016100123314335.mp3
2 3
Copyright © 2016-2021 Jacky's Blog. Designed by nicetheme.
粤ICP备16016168号-1
  • 首页
  • 关于
  • 项目
  • 大事记
  • 留言板
  • 友情链接
  • 分类
    • 干货
    • 随笔
    • 项目
    • 公告
    • 影视
    • 尝鲜
    • 算法
    • 深度学习
热门搜索
  • Mac
  • Apple
  • OS X
  • iOS
  • macOS
  • Linux
  • WordPress
  • 阿里云
  • Windows
  • macOS Sierra
  • 运维
  • BootCamp
  • 维修
  • Cydia
  • Tweak
  • DEB
  • CDN
  • 加速网站
Jacky
PHP C C++ Python | 舞象之年 | 物联网工程
148 文章
118 评论
210 喜欢
  • 3
  • 2
  • Top