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]);
            }
    
        }
    }
  • 相关阅读:
    Android Studio 字体和字号调整
    【IDEA】项目中引入Spring MVC
    【Double】double精度问题和int、long除不尽取舍问题
    【进制转换】原码反码和补码的理解以及进制转换
    【工具】SwitchHost的使用
    【工具】谷歌浏览器使用技巧
    【Git和GitHub】学习笔记
    【IE兼容性】代码中多语言样式+IE不兼容解决
    【Trello】使用指南
    【实操】进制转换:除基倒取余法
  • 原文地址:https://www.cnblogs.com/inspred/p/9236558.html
Copyright © 2011-2022 走看看