排序算法-插入排序

1 插入排序

插入排序是一种简单直观的排序算法。

算法思路

把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。

从小到大的插入排序整个过程如图示:例如初始数列{5,2,4,6,1,3}

 

第一轮:从第二位置的 2 开始比较,比前面 5 小,交换位置。

第二轮:第三位置的 4 比前一位置的 5小,交换位置,依次往前比较。

第三轮:第四位置的 6 比前一位置的 5大,无需交换位置。

第四轮:第五位置的 1 比前一位置的 6 小,交换位置,再依次往前比较。

第五轮:第六位置的 3 比前一位置的 6 小,交换位置,再依次往前比较。

 

代码

package com.hsp.baselearn.algorithm;


/**
 * 插入排序
 */
public class InsertSort {




    public static void main(String[] args) {
        int arr [] ={9,8,5,4,2,0};
        insertSort(arr);

    }

    private static void insertSort(int[] arr) {
        if (arr == null && arr.length <= 1)
            return;
        for (int i = 1; i < arr.length; i++) { //趟数
            for (int j = i;j>0;j--){
                //交换位置
                if(arr[j]<arr[j-1]){
                    swap(arr,j,j-1);
                }else{
                    break;
                }
            }
        }
        for (int i: arr) {
            System.out.print(i+"\t");
        }
    }

    private static void swap(int[] arr,int i,int j){
        int temp  = arr [i];
        arr[i]=arr[j];
        arr[j]=temp;
    }




}

 

 

 

posted @ 2021-12-21 23:10  KwFruit  阅读(47)  评论(0编辑  收藏  举报