zoukankan      html  css  js  c++  java
  • 简单排序算法

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

    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));
        }
  • 相关阅读:
    LeetCode(287)Find the Duplicate Number
    LeetCode(290) Word Pattern
    LeetCode(205)Isomorphic Strings
    LeetCode(201) Bitwise AND of Numbers Range
    LeetCode(200) Number of Islands
    LeetCode(220) Contains Duplicate III
    LeetCode(219) Contains Duplicate II
    命令行执行Qt程序
    LeetCode(228) Summary Ranges
    redis 的安装和使用记录
  • 原文地址:https://www.cnblogs.com/yunfeiqi/p/7890173.html
Copyright © 2011-2022 走看看