排序算法——插入排序

来源:互联网 发布:网络交换器 编辑:程序博客网 时间:2024/05/29 10:14

排序算法——插入排序


直接插入排序:某数组中共有N个无序整型或浮点数据(可比较元素),插入排序需要进行N-1次循环。从p=1到N-1次循环,每次循环都将数组中位置p上元素向左移动,直到前p+1个元素被正确排序(直到它找到它的正确位置)。这样循环结束后该数据组也排好序了。

实现:

    public static <T extends Comparable<? super T>> T[] insertionSortUp(T[] t){        //从1开始进行length-1次循环        for (int i = 1; i < t.length; i++) {            //位置i元素为插入元素,temp临时存放数据            T temp = t[i];            //与前i个数据进行比较排序,找到合适位置就插入            for (int j = i; j > 0 && temp.compareTo(t[j-1]) < 0; j--) {                t[j] = t[j-1];                t[j-1] = temp;            }        }        return t;    }

测试:

public class Main {    public static void main(String[] args) {        Integer[] i={3,6,8,22,5,7,2};        i = InsertionSort.insertionSortUp(i);        System.out.println(Arrays.toString(i));    }}

结果:

[2, 3, 5, 6, 7, 8, 22]

总结:
1. 平均时间复杂度:O(n²)
2. 空间复杂度:O(1)
3. 是稳定排序算法,更适合原始记录基本有序的,小规模(千以下)排序
4. 也适用于链式存储结构

原创粉丝点击