zoukankan      html  css  js  c++  java
  • 冒泡排序简述

    冒泡排序(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]+" ");
        }
    
      }
    
    }
    

    程序测试截图:

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

  • 相关阅读:
    HDU 1002 A + B Problem II
    HDU 2602 Bone Collector WA谁来帮忙找找错
    爬楼梯问题-最大迈两步
    2106 Problem F Shuffling Along 中石油-未提交-->已提交
    2101 Problem A Snake Filled
    2078 Problem H Secret Message 中石油-未提交-->已提交
    有关 时间 空间 以及 数据类型 的总结
    hdu 2510
    hdu 1133 卡特兰 高精度
    hdu 2067
  • 原文地址:https://www.cnblogs.com/hzauxx/p/11350957.html
Copyright © 2011-2022 走看看