冒泡排序

2021-04-26 01:26

阅读:562

标签:print   最大   swa   static   快速排序   最大的   str   而且   很多   

概述

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

 

核心思想

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

举例如下:

  3,5,4,2

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

第一轮

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

  比较5和4,发现4

  比较2和5,发现2

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

第二轮

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

  比较4和2,2

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

第三轮

  比价3和2,发现2

总结:经过上面的过程,大家应该清楚什么是冒泡排序了,思想很简单,就是交换相邻的元素,一直遍历,时间复杂度为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 ) {

            for (int j = 0; j ) {

                if (array[j] > array[j+1]){
                    swap(j,j+1);
                }
            }

        }

        for (int i = 0; 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();
    }

}

冒泡排序

标签:print   最大   swa   static   快速排序   最大的   str   而且   很多   

原文地址:https://www.cnblogs.com/gunduzi/p/13255000.html


评论


亲,登录后才可以留言!