插入排序法

1.原理

默认第一个元素已排序,后面每个元素各与前面元素依次进行比较,直到不需要交换位置,根据需求插入位置(升序或降序)。

画图解释如下:

第一轮比较:

 

 第二轮比较:

 

第三轮比较:

 

 第四轮比较:

 

结论:n个元素,要进行n-1轮比较,每轮比较次数不定。时间复杂度为O(n^2)。

2.核心代码如下:

void insertSort(int[] arr) {
        int temp;
        //进行比较轮次,从第二个元素开始
        for (int i = 1; i < arr.length; i++) {
            //每轮与前面元素比较次数,遇到不用交换就跳出
            for(int j=i;j>0;j--){
                if(arr[j]<arr[j-1]){
                    temp=arr[j];
                    arr[j]=arr[j-1];
                    arr[j-1]=temp;
                }else {
                    break;
                }
            }
        }
    }

 

posted @ 2021-01-19 21:14  吃个橘子丶  阅读(115)  评论(0)    收藏  举报