插入排序

1 算法步骤 

  1)将待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。

  2)从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)

2 动画演示

  

 3 参考代码

package com.tcxpz.insert;
/**
 * 直接插入排序
 * @author jgp QQ:1072218420
 *
 */
public class InsertSort {
    public static void main(String[] args) {
        int[] arr = new int[]{5,3,4,7,2};
        System.out.print("排序前:");
        for(int num:arr)
            System.out.print(num+" ");
        System.out.println();
        //进行排序
        int[] bubble_arr = sort(arr);
        System.out.print("排序后:");
        for(int num:bubble_arr)
            System.out.print(num+" ");
    }
    private static int[] sort(int[] arr) {
        for(int i=1;i<arr.length;i++){
            // 记录要插入的数据
            int temp=arr[i];
            // 从已经排序的序列最右边的开始比较,找到比其小的数
            int j=i;
            while(j>0&&temp<arr[j-1]){
                arr[j]=arr[j-1];
                j--;
            }
            // 存在比其小的数,插入
            if(j!=i){
                arr[j]=temp;
            }
        }
        return arr;
    }
}
原文地址:https://www.cnblogs.com/tcxpz/p/10588479.html