排序算法-插入排序(Java)

yuanran0 2019-12-04

package com.rao.linkList;import java.util.Arrays;/** * @author Srao * @className InsertSort * @date 2019/12/4 12:02 * @package com.rao.linkList * @Description 插入排序 */public class InsertSort {    /**     * 插入排序     * @param arr     */    public static void insertSort(int[] arr){        for (int i = 1; i < arr.length; i++){            //先把要插入的数保存下来            int temp = arr[i];            int k = i-1;            //找到第一个比它小的数的下标            while (k >=0 && arr[k] > temp){                k--;            }            //把较小的元素之前的元素全部后移一位,为要插入的元素空出一个位置            for (int j = i; j > k+1; j--){                arr[j] = arr[j-1];            }            //插入这个元素到第一个比它小的元素的前面            arr[k+1] = temp;        }    }    public static void main(String[] args) {        int[] arr = new int[]{3,6,2,5,9,1,0,8};        System.out.println(Arrays.toString(arr));        insertSort(arr);        System.out.println(Arrays.toString(arr));    }}

1.从数组的第二个元素开始遍历,向数组的头开始找

2.如果遇到比这个元素大的数,就继续向前找

3.如果遇到比这个元素小的数,就把之前比这个元素大的数想前移动一位,然后把这个元素插入到这个比他小的数的前面

相关推荐

yuanran0 / 0评论 2020-04-20
闫新宇 / 0评论 2015-02-06