java实现插入排序

时间复杂度:O(n²)

1. 算法思想

数组第一个数arr[0]视为有序,将第二个数arr[1]插入。插入完成后再将前两个数视为有序,
将第三个数插入。如此循环直至插入所有数。

2. 插入的过程

一次插入中,将arr[n+1]插入前面排好序的arr[0]~arr[n]中。若arr[n+1]<arr[n],则二者交换位置(可视为arr[n+1]插入到arr[n]前面,如{1,3,4,2}变为{1,3,2,4}),然后再将交换后的a【n】(也就是例子中的2)与a[n-1]比较,如此循环直至该数不再有比它大的数在前面或者该数已经到a[0]位置时结束一次插入过程。

3. java算法实现

public static void charu(int[] arr) {
            if(arr == null || arr.length<2) {
                return;
            }
            else {
                //数组第一个数arr[0]视为有序,从第二个数arr[1]开始插入
                for(int i = 1 ; i < arr.length ; i++) {
                    for(int j = i - 1 ; j >= 0 && arr[j] > arr[j + 1] ; j--) {
                        int temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                }
            }
        } 
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 插入排序基本原理 将待排序列表看成有序和无序的两部分,初始为有长度为1的有序数组和其后的无序数组。之后从无序数组中...
    OrdinaryKnowing阅读 338评论 0 0
  • 插入排序(Insertion Sort),是一种简单直观并且稳定的排序算法。 从前到后取每个元素和之后的元素进行比...
    DouQing阅读 227评论 0 2
  • 插入排序适合于部分有序序列和小规模的数据。其平均时间复杂度为 O(N^2),空间复杂度为 O(1),并且为稳定排序...
    Python高效编程阅读 508评论 0 10
  • public class InsertSortNumber { public static void main(S...
    朱嘻嘻阅读 326评论 0 0
  • 今天出去吃饭,饭后搞活动送了个小礼品。礼品本身不值一提,重要的的是渐变。本篇就介绍并实际做一下这个渐变效果。 线性...
    张歆琳阅读 3,263评论 6 14