zoukankan      html  css  js  c++  java
  • java八种排序算法---直接插入排序

    在学习算法的过程中,我们难免会接触很多和排序相关的算法。总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的。

    从今天开始,我们将要进行基本的排序算法的讲解。Are you ready?Let‘s go~~~

    直接插入排序概念讲解:

    直接插入排序的做法是:每次从无序表中取出第一个元素,插入到有序表的合适位置,使有序表仍然有序

    第一趟比较前2个数然后把第二个数按大小插入到有序表中,第二趟把第三个数与前2个数从前向后扫描,把第三个数按大小插入到有序表中,依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。

    直接插入排序是由两层嵌套循环组成的,外层循环标识并决定待比较的数值,内层循环为待比较数值确定其最终位置,直接插入排序是将待比较的数,与它前一个数值进行比较,所以外层循环是从第二个数值开始的,当前一个数值比较大的情况下循环继续比较,直到找到比待比较数值小的,并将待比较数值置入其 后一位置,结束该次循环。

    排序方法
    1.简单方法
    首先在当前有序区R[1..i-1]中查找R[i]的正确插入位置k(1≤k≤i-1);然后将R[k..i-1]中的记录均后移一个位置,腾出k位置上的空间插入R[i]。
    注意:若R[i]的关键字大于等于R[1..i-1]中所有记录的关键字,则R[i]就是插入原位置。
    直接插入排序的Java代码实现
    package com.yonyou.test;
     
    /**
     * 内部排序算法之直接插入排序
     * 默认按照从小到大进行排序操作
     */
    public class Test{
        public static void main(String[] args) {
       //需要进行排序的数组
        int[] array=new int[]{8,3,2,1,7,4,6,5};
         //输出原数组的内容
        printResult(array);
        //直接插入排序操作
        directInsertSort(array);
        //输出排序后的相关结果
        printResult(array);
        }
         
         
        
        /**
         * 直接插入排序的方法
         * @param array
         */
        private static void directInsertSort(int[] array) {
           for(int i=0;i<array.length;i++)
           {
                for(int j=0;j<i;j++)
                {
                    if(array[i]<array[j])
                    {
                      int temp=array[i];
                      System.arraycopy(array,j,array,j+1,i-j);
                      array[j]=temp;
                    }
                }
           }
        }
         
     
     
         
     
        /**
         *                                       
         * 输出相应数组的结果
         * @param array
         */
        private static void printResult(int[] array) {
           for(int value:array)    
               System.out.print(" "+value+" ");
          System.out.println();
        }
     
        /**
         * 交换数组中两个变量的值
         * @param array
         * @param i
         * @param j
         */
        private static void swap(int[] array,int i,int j){
            int temp=array[i];
            array[i]=array[j];
            array[j]=temp;
        }
    }
    

      

  • 相关阅读:
    md测试
    安利好用的小工具及软件(常更新)
    08-无人值守自动批量安装系统(下)
    建立本地yum仓库
    如何知道命令是由哪个服务提供的
    08-无人值守自动批量安装系统(上)
    07-软件管理
    06-时间管理
    05-用户和组以及权限
    04-编辑文本
  • 原文地址:https://www.cnblogs.com/yb90/p/10017065.html
Copyright © 2011-2022 走看看