直接插入排序是指将一个个待排序的元素插入到前面已经排好序的有序序列中去,直到插完所有元素为止,主要步骤如下:

1)先假设第一个元素已经排好序。

2)然后依次取出还需要进行排序的下一个元素,也就是排序完成的元素后面的下一个元素,取出下一个元素,设为待插入元素,在已经排序的元素序列中从后向前扫描,如果该元素(已排序)大于待插入元素,将该元素移到下一位置。

3)重复步骤2,直到找到已排序的元素小于或者等于待排序元素的位置,插入元素。

4)重复步骤2、步骤3,完成排序。


例如:

import java.util.Arrays;
public class Main {
    public static void main(String args[]) {
        int[] arr = new int[]{17,62,39,52,8,24};
        for(int i=1;i<arr.length;i++) { //从第二个元素开始比较
            int temp = arr[i]; //记录当前元素
            for(int j=i-1;j>=0;j--) { //从最后一个元素开始比较
                if(arr[j]>temp) { //如果比当前元素大
                    arr[j+1] = arr[j]; //从该处往后所有元素向后移动一位
                    arr[j] = temp; //将当前元素插入到arr[j]中
                }
            }
        }
        for(int i=0;i<arr.length;i++) {
            System.out.print(arr[i]+" ");
        }
    }
}


运行结果如下:

8 17 24 39 52 62


点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)