zoukankan      html  css  js  c++  java
  • 算法系列一:简单排序

    一.三种简单易懂的排序算法

    1.代码:

    package com.inspire.jdk.caculate;
    
    /**
     * Created by yaming on 18-6-26.
     */
    public class OrderTest {
    
        public static void main(String[] args) {
            /*
            冒泡排序:相邻两个位置元素比较,如果前面一个元素比后面一个元素大,就交换位置
            每一轮比较后,会确定一个最大值,最大值放在最后一位
            总共需要比较 : data.length-1 次
            下一轮比较的次数比上一轮比较的次数少一次
            时间复杂度:O(n^2). 双重for循环
             */
            int[] arr = {2,4,5,3,9,1};
            for (int i = 0; i < arr.length-1; i++) {
                for (int j = 0; j < arr.length-i-1; j++) {
                    if(arr[j]>arr[j+1]){
                        int c = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = c;
                    }
                }
            }
    
    
            /**
             * 选择排序:从数组中找到最小的元素,将它与数组第一个元素交换位置
             * 没一次确定一个最小值,放在第一个位置
             * 总共需要交换:data.length 次
             * 下一次要比较的数组比上一次少一个元素
             * 时间复杂度:O(n^2). 双重for循环
             */
            for (int i = 0; i < arr.length; i++) {
                int min =i;
                //找出比第一个位置上的元素还小的元素,
                for (int j = i+1; j < arr.length; j++) {
                    if(arr[j]< arr[min]){
                        min = j;
                    }
                }
                //交换两个变量: arr[temp] <--> arr[i]
                int temp = arr[min];
                arr[min] = arr[i];
                arr[i] = temp;
            }
    
            int[] data = {2,4,5,3,9,1};
            /**
             * 插入排序
             * 每一轮比较后的结果:该元素前面元素是有序的
             * 比较次数: data.length-1
             *
             */
            for (int i = 1; i < data.length; i++) {
    
                //只和该元素前面的元素比较,比较的结果:该元素前面的元素是有序的
                for (int j = i; j>0 ; j--) {
                    //如果后面的大于前面的就交换
                    if(data[j]<data[j-1]){
                        int temp = data[j];
                        data[j] = data[j-1];
                        data[j-1] = temp;
                    }
                }
            }
            for (int i = 0; i < data.length; i++) {
                System.out.print(data[i]);
            }
    
        }
    }
  • 相关阅读:
    全网解析视频接口自行测试
    emlog博客的安装教程
    无需任何软件,简单步骤教你手机投屏到电脑
    关于Windows 10系统重置了但以前的office找不到了问题的解决方法
    java&nbsp;indexOf方法
    JAVA&nbsp;线程&nbsp;yield
    android&nbsp;sqlite&nbsp;增删改[insert、up…
    socket error 错误类型列表
    armeabigcc:error trying to& ex…
    android&nbsp;setBackgroundColor
  • 原文地址:https://www.cnblogs.com/inspred/p/9236558.html
Copyright © 2011-2022 走看看