排序算法---插入排序(Insertion Sort)

算法基本思想:

插入排序(Insertion Sort)算法通过对未排序的数据执行逐个插入至合适的位置而完成排序工作。

示意图

排序流程:

  1. 首先对数组的前两个数据进行从小到大排序
  2. 然后将第三个数据与前面排好的数据进行比较,把第三个数插入合适的位置
  3. 然后将第四个数据插入到前三个数据中
  4. 重复此步骤,直到最后一个数插入合适的位置为止,到此排序完成

代码实现

import java.util.Arrays;

public class InsertionSort {
    public static void sort(int[] arr) {
        int len = arr.length;
        int tmp;//要插入的数据
        int istIndex;//插入位置索引
        System.out.println("原始顺序: " + Arrays.toString(arr));
        for (int i = 1; i < len; i++) {
            if (arr[i] < arr[i - 1]) {
                tmp = arr[i];
                istIndex = i;
                while (istIndex > 0 && arr[istIndex-1] > tmp) {
                    //插入位置往前移,寻找合适位置
                    arr[istIndex] = arr[istIndex - 1];
                    istIndex--;
                }
                arr[istIndex] = tmp;
            }
            System.out.println("第" + i + "趟排序:" + Arrays.toString(arr));
        }
    }

    public static void main(String[] args) {
        int[] arr = new int[10];
        //初始化数组
        for (int i = 0; i < 10; i++) {
            arr[i] = (int) (Math.random() * (100 + 1));
        }
        InsertionSort.sort(arr);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容