zoukankan      html  css  js  c++  java
  • 【数据结构与算法】6.1 冒泡排序

           冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。

    优化:
          因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较。(这里说的优化,可以在冒泡排序写好后,在进行)

    2.代码实现

    package com.hblg.sort;
    
    import java.text.SimpleDateFormat;
    import java.util.Arrays;
    import java.util.Date;
    import java.util.Random;
    
    /**
     * @author i
     * @create 2019/9/29 17:00
     * @Description 冒泡排序
     *
     */
    public class BubbleSort {
    
        private static final int MAX = 100000;
    
        public static void main(String[] args) {
    
            int [] array = new int [MAX];
            for (int i = 0; i < MAX; i++) {
                array[i] = (int)(Math.random()*1000000);
            }
            Date date = new Date();
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String str = simpleDateFormat.format(date);
            System.out.println("排序前:"+str);
    
            bubbleSort(array);
    
            Date date1 = new Date();
            String str2 = simpleDateFormat.format(date1);
            System.out.println("排序后:"+str2);
    //        System.out.println("排序前:");
    //        System.out.println(Arrays.toString(array));
    //        bubbleSort(array);
    //        System.out.println("排序后:");
    //        System.out.println(Arrays.toString(array));
        }
    
        public static void bubbleSort(int array[]){
            int temp = 0;
            boolean flag = false;
            for (int i = 0; i < array.length-1; i++) {
                for (int j = 0; j < array.length-1-i; j++) {
                    if(array[j]>array[j+1]){
                        flag = true;//表示进行排序操作
                        temp = array[j];
                        array[j] = array[j+1];
                        array[j+1] = temp;
                    }
                }
                //System.out.println("第"+(i+1)+"次"+ Arrays.toString(array));
                if(flag==false){
                    break;
                }else {
                    flag = false;
                }
            }
        }
    }
    
  • 相关阅读:
    关于fft后图像的纵轴问题
    matlab 与 modelsim 联调 cic抽取滤波器
    z变换的性质
    转载 iir直接i型和直接ii型滤波器
    第十六篇:初探IO复用
    第十五篇:关于TCP通信程序中数据的传递格式
    第十四篇:回射程序中的异常分析
    第十三篇:并发回射服务器的具体实现及其中僵尸子进程的清理( 下 )
    loj 1031(区间dp+记忆化搜索)
    loj 1150(spfa预处理+二分+最大匹配)
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860804.html
Copyright © 2011-2022 走看看