• 02_排序_插入排序


    【基本原理】

    直接插入法思想:
            1.在原始数据中,将第一个数据作为已排序的数据序列
            2.从数组中获取下一个元素,在已经排序好的元素中从后向前扫描,并判断该元素与已排列好的的大小
            3.若排序序列的元素大于新元素,则将该元素移到下一位置
            4.重复步骤三,直到找到已排序的元素小于或者等于行元素的位置
            5.将新元素插入到该位置
            6.重复步骤2~5,直到数据处理完毕

    【举例】

    待排序数组

    【38,65,97,76,13,27,49】

    排序过程

    第一趟插入38:【38,65,97,76,13,27,49】

    第二趟插入65:【38,65,97,76,13,27,49】

    第三趟插入97:【38,65,97,76,13,27,49】

    第四趟插入76:【38,65,76,97,13,27,49】

    第五趟插入13:【13,38,65,76,97,27,49】

    第六趟插入27:【13,27,38,65,76,97,49】

    第七趟插入49:【13,27,38,49,65,76,97

    【代码实现】

    package com.sort;
    
    public class TestInsertSort {
        public static int[] insertSort(int[] a){
            int length=a.length;
            int i,j,tmp;
            for(i=1;i<length;i++){
                tmp=a[i];               //取出一个未排序的数据
                for(j=i-1;j>=0&&a[j]>tmp;j--){ //在排序序列中查找位置
                    a[j+1]=a[j];        //数据向后移动,无须担心被覆盖,因为tmp以保存第一个被覆盖的数据
                }
                a[j+1]=tmp;   //插入数据,因为上面的for循环最后执行了一次j--,所以赋值时a[j+1]
            }
            return a;
        }
        public static void main(String[] args){
            int a[]={2,9,0,8,7,1,5,4,3,6};
            a=insertSort(a);
            for(int i=0;i<a.length;i++){
                System.out.print(a[i]+" ");
            }
        }
    }
  • 相关阅读:
    <a>與<link>的區別
    103_linux如何安装mysql数据库?
    102_Centos7在虚拟机上开机时出现黑屏,怎么解决?
    101_war和war exploded的区别
    100_linux中passwd文件的用户解析
    099_linux基础命令三
    098_linux基本操作命令二
    097_linux如何配置jdk路径
    096_如何将linux的IP地址转换成静态ip地址?
    078_ip地址.DNS,子网掩码,网关分别是什么,又有什么作用?
  • 原文地址:https://www.cnblogs.com/HigginCui/p/5702104.html
Copyright © 2020-2023  润新知