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

    1.原理
    两层循环完成排序
    外层循环:
    外层循环一次会把最大的数移动到list[n]
    循环第二次会把第二大的数移动到list[n-1]
    当循环n-1后,排序完成。
    内层循环:
    两相邻数字进行比较,如果list[j]比list[j-1]大,则交换数字
     
    因为过程就是不断的较大的数向数组后移动,就像水冒泡一样,因此称之为冒泡排序
     
    2.java源码
    import java.util.Random;
    
    /**
     * 
     * <p>
     * Description:冒泡排序
     * <p>
     * 
     * @author gaozhen
     * @date 2018年6月30日
     * @Version 1.0
     */
    public class BubleSort {
    
    	public static void main(String[] agrs) {
    		final int MAX_SIZE = 10;
    		int[] array = new int[MAX_SIZE];
    		Random random = new Random();
    		for (int i = 0; i < MAX_SIZE; i++) {
    			array[i] = random.nextInt(MAX_SIZE);
    		}
    		System.out.println("排序前:");
    		print(array);
    		System.out.println("开始排序...");
    		array = sort(array);
    		System.out.println("排序完成");
    		System.out.println("排序后:");
    		print(array);
    	}
    
    	public static int[] sort(int[] nums) {
    		for (int i = 0; i < nums.length - 1; i++) {
    			/**
    			 * 每做完一次循环,第nums.length-i大移到合适的位置
    			 */
    			for (int j = 0; j < nums.length - 1 - i; j++) {
    				if (nums[j] > nums[j + 1]) {
    					int temp = nums[j];
    					nums[j] = nums[j + 1];
    					nums[j + 1] = temp;
    				}
    			}
    			print(nums);
    		}
    		return nums;
    	}
    
    	public static void print(int[] nums) {
    		for (int i : nums) {
    			System.out.print(i + "	");
    		}
    		System.out.println();
    	}
    
    }
    

      

    3.打印结果
    排序前:
    8 8 5 2 3 5 6 1 2 9
    开始排序...
    8 5 2 3 5 6 1 2 8 9 //找到最大的9
    5 2 3 5 6 1 2 8 8 9 //找到第二大的8
    2 3 5 5 1 2 6 8 8 9 //找到第三大的8
    2 3 5 1 2 5 6 8 8 9 //以此类推
    2 3 1 2 5 5 6 8 8 9
    2 1 2 3 5 5 6 8 8 9
    1 2 2 3 5 5 6 8 8 9
    1 2 2 3 5 5 6 8 8 9
    1 2 2 3 5 5 6 8 8 9
    排序完成
    排序后:
    1 2 2 3 5 5 6 8 8 9
     

  • 相关阅读:
    .net core系列之《.net平台历程介绍以及.net framework和.net core对比》
    C++ 拷贝构造函数
    C++ const引用
    C++ 引用和指针
    C++ 将派生类赋值给基类(向上转型)
    C++ 虚继承
    C++ 基类和派生类的构造函数以及析构函数
    C++ 类继承时的作用域嵌套和对象内存模型
    C++ private + protected + public
    C++ const成员变量、成员函数和对象
  • 原文地址:https://www.cnblogs.com/gsqc/p/9266137.html
Copyright © 2011-2022 走看看