插入排序及其实现

插入排序

插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。

时间复杂度:O(n^2)

实现代码

/**
 * 插入排序
 */
public static void insertSort(int[] array) {
    for (int i = 1; i < array.length; i++) {
        int target = array[i];
        int j = i; // 目标元素要插入的位置
        while (j >= 1 && target < array[j - 1]) {
            array[j] = array[j - 1];
            j--;
        }
        array[j] = target;
    }
}
/**
 * 插入排序for循环写法
 */
public void insertSort(int[] array) {
    for (int i = 1; i < array.length; i++) {
        int target = array[i]; // 要插入的元素
        int position = i; // 要插入的位置
        for (int j = i - 1; j >= 0; j--) { // 循环查找要插入的位置
            if (array[j] > target) {
                array[j + 1] = array[j]; // 比目标元素大的向后移
                position = j;
            } else {
                break;
            }
        }
        array[position] = target;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。