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

    概述

      最近在面试,发现基本上上点规模的公司都喜欢问算法的问题,但是在我实际的工作中使用这些算法的地方非常少,感觉就偶尔用一下递归,而且递归也不是什么算法,其他的很多算法很少使用,但是既然人家问了,那也没办法,说不定是因为人家的公司确实高大上,工作中很多的场景可以使用这些算法,本文介绍冒泡排序,一种很简单的排序算法,下一篇会介绍快速排序

    核心思想

      什么是冒泡,就是在水中一个气泡,一点一点的上升到水面,那这个算法其实也是这样做的,就是比较相邻的元素,从头比较到尾,那就可以找到一个最大或者最小的元素,然后再从头找,找到次大或者次小的,以此类推。

    举例如下:

      3,5,4,2

    要求:使用冒泡排序从小到大排序

    第一轮

      比较3和5,5>3,不用交换,结果为:3,5,4,2

      比较5和4,发现4<5,交换5和4的位置,结果为:3,4,5,2

      比较2和5,发现2<5,交换2和5的位置,结果为:3,4,2,5

    经过第一轮的排序,大家可以发现,最大的元素5已经跑到他应该呆的位置了

    第二轮

      比较3和4,4>3,不用交换,结果为:3,4,2,5

      比较4和2,2<4,交换位置,结果为:3,2,4,5

    经过第二轮,发现4已经跑到他应该呆的位置了

    第三轮

      比价3和2,发现2<3,交换位置,结果为:2,3,4,5

    总结:经过上面的过程,大家应该清楚什么是冒泡排序了,思想很简单,就是交换相邻的元素,一直遍历,时间复杂度为O(n2),时间复杂度太高,除了名字好听之外,基本没啥用

    代码实现

      本文使用java实现,如果你熟悉C或者python,也可以凑合看,语法差不太多

    /**
     * @author: steve
     * @date: 2020/7/6 13:58
     * @description: 冒泡排序
     */
    public class BubbleSort {
        public static int array[] = {72,6,57,88,60,42,83,73,48,8};
    
        public static void bubbleSort(){
            for (int i = 0; i < array.length; i++) {
    
                for (int j = 0; j < array.length -1 - i; j++) {
    
                    if (array[j] > array[j+1]){
                        swap(j,j+1);
                    }
                }
    
            }
    
            for (int i = 0; i < array.length; i++) {
                System.out.println(array[i]);
            }
        }
    
        public static void swap(int i, int j){
            int temp = 0;
            temp = array[i];
            array[i] = array[j];
            array[j] = temp;
        }
    
        public static void main(String[] args) {
            bubbleSort();
        }
    
    }
  • 相关阅读:
    有用的文件(配置文件)
    gulp webpack 区别
    vue ssr
    微信小程序自定义组件
    mpvue 搭建小程序
    【转】DotNet加密方式解析--非对称加密
    java RSA加密算法
    【转】C#中RSA加密解密和签名与验证的实现
    C# 字符串 分割 反转 Base64
    RSA加密算法
  • 原文地址:https://www.cnblogs.com/gunduzi/p/13255000.html
Copyright © 2011-2022 走看看