zoukankan      html  css  js  c++  java
  • java算法 — 数组的简单排序

    下面讲解 冒泡法 和 选择法排序,,,忽略掉插入法排序,因为插入法排序和冒泡差不多且不好理解。

    1.冒泡法,这个是最基本的排序算法,不说那么多 ,直接上源码:

    package ch01;
    
    import java.util.Scanner;
    
    /**
     * 冒泡法排序
     */
    public class Bubbling {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            long[] arr = new long[10];
            for (int i = 0; i < arr.length; i++) {
                arr[i] = sc.nextLong();
            }
            sort(arr);
            for (int i = 0; i < arr.length; i++) {
                System.out.println(arr[i]);
            }
        }
    
        /**
         * 冒泡 - 尾部往前冒。
         * @param arr
         */
        public static void sort(long[] arr) {
            long t = 0;
            for(int i = 0;i < arr.length - 1; i++){
                 for (int j = arr.length - 1;j > i; j--){
                    if (arr[j] <  arr[j - 1]){
                        //交换
                        t = arr[j];
                        arr[j] = arr[j-1];
                        arr[j-1] = t;
                    }
                 }
            }
        }
    }
    冒泡排序

    2.选择法排序是有 i j k ,,其中i 做外循环,j是 内循环变量, k 是标识,总是指向  最小(大) 的值。

    源码:

    package ch01;
    
    /**
     * 选择排序法
     * 比 冒泡排序 交换的次数少  因此效率比冒泡高那么一点
     */
    public class Select {
        public static void main(String[] args) {
    
            long[] arr = {3, 7, 5, 8, 4, 2, 1, 6, 9, 10}; //10个数据
            sort(arr);
            for (int i = 0; i < arr.length; i++) {
                System.out.println(arr[i]);
            }
        }
    
    
        public static void sort(long[] arr) {
            int k = 0;
            long temp = 0L;
            for (int i = 0; i < arr.length - 1; i++) {
                //外循环初始 k = i
                k = i;
                // 【j = i + 1】 少比较 1 次
                for (int j = i + 1; j < arr.length; j++) {
    
    /**
     *          是在不懂请打开这个注释!!
     *                 System.out.println("arr[i]" + arr[i]);
     *                 System.out.println("arr[j]" + arr[j]);
     *                 System.out.println("arr[k]" + arr[k]);
     *                 System.out.println("==================");
     */
    
                    //j是会变的
                    if (arr[j] < arr[k]) {
                        //那么k指向的是最小的值
                        k = j;
                    }
                }
    
                //内循环结束 - 交换最小值
                temp = arr[i];
                arr[i] = arr[k];
                arr[k] = temp;
            }
        }
    }
    选择法排序

    实在看不懂打开里面的注释即可。

    本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/15529019.html

  • 相关阅读:
    ajax的原理及实现方式
    在linux中添加环境变量
    ftp简单命令
    linux命令之scp
    java中创建对象的方法
    10个调试技巧
    java读取.properties配置文件的几种方法
    Java对象和XML转换
    Java Float类型 减法运算时精度丢失问题
    Java内存分配全面浅析
  • 原文地址:https://www.cnblogs.com/bi-hu/p/15529019.html
Copyright © 2011-2022 走看看