排序算法--------直接插入排序

1.算法方法描述

  1. 第一个元素开始,该元素可以认为已经被排序
  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描
  3. 如果该元素(已排序)大于新元素,将该元素移到下一位置
  4. 重复步骤 3,直到找到已排序的元素小于或者等于新元素的位置
  5. 将新元素插入到该位置后
  6. 重复步骤 2~5

2.算法思想

将待排序表分为两部分,左边为有序区,右边为无序区。将无序区的元素与有序区的每一个元素比较,小于的话,将该元素插进有序区相应的位置中。

3.图解

排序算法--------直接插入排序

4.算法分析

稳定性:稳定

时间复杂度:n^2

空间复杂度:1

package com.lsl.datastructure;

public class DirectInsertionSort {
    public static void main(String[] args) {
        int[] intArr=new int[]{1, 51, 32, 45, 56,11,22,44,76,12};
        intArr=sort(intArr);
        for (int i = 0; i < intArr.length; i++) {
            System.out.println(intArr[i]);
        }
    }

    /*
    * 由小到大排序
    * */
    private static int[] sort(int[] arr) {
        for (int i = 1; i < arr.length; i++) {
            int num = arr[i];
            int index=i;
            for (int j = i - 1; j >= 0; j--) {
                if (arr[index] < arr[j]) {
                    arr[index] = arr[j];
                    arr[j] = num;
                    index--;
                } else {
                    break;
                }
            }
        }
        return arr;
    }
}

版权声明:本博客为记录本人自学感悟,转载需注明出处!
https://me.****.net/qq_39657909