冒泡排序简述

冒泡排序(C&Java实现)

2019/8/14 10:41:46

使用工具:

   Java:IDEA  
      C:CLion
文档编写:MarkdownPad2

每天一算法,希望自己的算法能有长足的进步,加油。

近几天线上的笔试更让我感受到各大互联网公司对于算法的重视。的确,现下主流的框架已经十分成熟,正常学习了就能知道如何使用,但是想要更进一步融合成自己的东西,融会贯通,还是需要深入其中去钻研,算法也算程序员的分水岭了,加油。


接下来看看今天的算法:冒泡排序

冒泡排序

冒泡排序(Bubble Sort),是一种较简单的 排序算法

基本思想:每次比较两个相邻的元素,如果他们的顺序错误就把它们交换过来。

原理:
   1. 比较相邻的元素,如果第一个比第二个大(小),就交换他们两个。
   2. 对每一对相邻元素做同样的工作,从开始第一对到结尾最后一对。
   3. 每一趟只能确定将一个数归位,针对所有元素重复以上步骤。

总结:如果有 n 个数进行排序,只需将 n-1 个数归位,也就是说要进行 n-1 趟操作。

算法分析

冒泡排序的算法核心部分是双重嵌套循环。

平均时间复杂度为:O(n^2)。

冒泡排序是一种稳定的排序算法。

代码实现

  1、C语言实现

//
// Created by czc on 2019/8/14.
//

#include<stdio.h>


int main(){

int book[100],i,j,t,n;
printf("请输入输入数据个数:");

scanf("%d",&n);

//循环读入n个数到数组中
for(i=1;i<=n;i++){
    scanf("%d",&book[i]);
}

//冒泡排序核心部分:双重循环
for(i=1;i<=n-1;i++){
    for(j=1;j<=n-i;j++){
        if(book[j]>book[j+1]){
            t=book[j];
            book[j]=book[j+1];
            book[j+1]=t;
        }
    }
}

for(i=1;i<=n;i++){
    printf("%d",book[i]);
    printf(" ");
}

return 0;
}

程序测试结果:

  2、Java实现

/*
创建人:czc
创建时间:2019/8/14
用途:冒泡排序
 */

import java.util.Scanner;

import static java.lang.System.out;
public class BubbleSort {
  private static Scanner scanner;

  public static void main(String[] args){
    int[] book=new int[100];

    int i,j,t,n;
    scanner=new Scanner(System.in);
    out.println("请输入排序数据个数:");
    n=scanner.nextInt();

    for(i=1;i<=n;i++){
        book[i]=scanner.nextInt();
    }

    //冒泡排序核心部分
    for(i=1;i<=n-1;i++){
        for(j=1;j<=n-i;j++){
            if(book[j]>book[j+1]){
                t=book[j];
                book[j]=book[j+1];
                book[j+1]=t;
            }
        }
    }

    for(i=1;i<=n;i++){
        out.print(book[i]+" ");
    }

  }

}

程序测试截图:

吾生也有涯,而知也无涯。

原文地址:https://www.cnblogs.com/hzauxx/p/11350957.html