排序算法(四)——插入排序

插入排序(英语:Insertion Sort)是一种简单直观的排序算法。通过对未排序的数据执行逐个插入至合适的位置而完成排序工作。

插入排序算法的运作如下:

1.首先对数组的前两个数据进行从小到大的排序;

2.接着将第3个数据与排好序的两个数据进行比较,将第三个数据插入合适的位置;

3.然后,将第4个数据插入已排好序的前3个数据中。

4.不断重复上述过程,直到把最后一个数据插入合适的位置。

package cn.kimtian.sort;

import java.util.Arrays;

/**
 * 这是一个插入排序算法
 *
 * @author kimtian
 */
public class InsertionSort {
    public static void main(String[] args) {
        int[] arr = {1, 3, 6, 7, 8, 0, 7, 4, 2, 1};
        insertSort(arr);
        System.out.println(Arrays.toString(arr));
    }

    /**
     * 这是一个插入排序算法
     *
     * @param arr
     */
    public static void insertSort(int[] arr) {
        //遍历所有的数字
        for (int i = 1; i < arr.length; i++) {
            //如果当前数字比前一个数字小
            if (arr[i - 1] > arr[i]) {
                int mid = arr[i];
                for (int j = i - 1; j >= 0 && arr[j] > mid; j--) {
                    int temp = arr[j];
                    //交换位置
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/third_/article/details/85709360