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

C 冒泡排序

Jacky
10月 2, 2019算法阅读 7,817

冒泡排序的原理:

  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)
  • 老板来罐冰阔落

    学到了 感谢大佬😘

    3年前 回复
    • Jacky

      @老板来罐冰阔落: 军er

      3年前 回复
近期评论
  • Jacky发表在《Nginx UI》
  • daiwenzh5发表在《Nginx UI》
  • Jacky发表在《Nginx UI》
  • daiwenzh5发表在《Nginx UI》
  • Jacky发表在《Nginx UI》
2 3
  • 3
  • 2
Copyright © 2016-2023 Jacky's Blog. Designed by nicetheme.
粤ICP备16016168号-1
  • 首页
  • 关于
  • 项目
  • 大事记
  • 留言板
  • 友情链接
  • 分类
    • 干货
    • 随笔
    • 项目
    • 公告
    • 纪念
    • 尝鲜
    • 算法
    • 深度学习
# Mac # # Apple # # OS X # # iOS # # macOS #
Jacky
PHP C C++ Python | 舞象之年 | 物联网工程
174
文章
169
评论
267
喜欢