• 简单排序算法


    排序是项目中经常使用的算法,下面简单说一下三种简单排序

    1. 选择排序,选择排序应该是所有排序算法中最直接最简单的排序,经过N-1趟比较好,序列形成有序列表,具体算法是,每一趟找到最大或者最小值,之后交换,依次循环n-1次,所有时间复杂度未O(n2)

    实现:

    public static void selectSort(int[] arr) {
            long start = System.currentTimeMillis();
            for (int i = 0; i < arr.length - 1; i++) {
                int min_index = i;
                for (int j = i + 1; j < arr.length; j++) {
                    // find index of min value
                    if(arr[min_index]>arr[j]) min_index = j;
                }
                // swap
                if(min_index != i){
                    int tmp = arr[i];
                    arr[i] = arr[min_index];
                    arr[min_index] = tmp;
                }
            }
            System.out.printf("简单排序算法	运行时间%dms
    ",(System.currentTimeMillis() - start));
        }

    2.冒泡排序,冒泡是一种经典排序算法,每一趟当前值都会和相邻元素比较,每趟结束后就后最大/最小值就会浮出水面,经过n-1次迭代之后,数组有序

    算法:

    public static void bubbleSort(int[] arr){
            long start = System.currentTimeMillis();
            for(int i =0;i<arr.length-1;i++){
                for(int j = 0;j<arr.length-1-i;j++){
                    if(arr[j] > arr[j+1]){
                        int tmp = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = tmp;
                    }
                }
            }
            System.out.printf("冒泡算法	运行时间%dms
    ",(System.currentTimeMillis() - start));
        }

    3. 直接插入排序,插入排序是每一步将待排序元素插入到前面已排好序序列中,知道插入完成

    public static void insertSort(int[] arr){
            long start = System.currentTimeMillis();
            for (int i = 1 ;i< arr.length;i++){
                int j = i;
               while (j > 0 && arr[j] < arr[j-1]){
                   int tmp = arr[j];
                   arr[j]= arr[j-1];
                   arr[j-1] = tmp;
                   j--;
               }
            }
            System.out.printf("直接插入算法	运行时间%dms
    ",(System.currentTimeMillis() - start));
        }
  • 相关阅读:
    Java反射中Class.forName与classLoader的区别
    Java各种成员初始化顺序
    crontab python脚本不执行
    Java mybatis缓存(转)
    Java Synchronized及实现原理
    JVM类加载器
    SSH掉线问题
    SSH登陆远程卡、慢的解决的办法
    shell脚本执行python脚本时,python如何将返回值传给shell脚本
    使用scrapy进行数据爬取
  • 原文地址:https://www.cnblogs.com/yunfeiqi/p/7890173.html
Copyright © 2020-2023  润新知