插入排序

来源:互联网 发布:核酸数据库 编辑:程序博客网 时间:2024/06/01 21:34

插入排序的基本思想:首先选择第一个元素作为有序部分,从第二个元素开始到结尾作为无序部分。从无序部分的第一个元素开始,和有序部分的最后一个元素开始向前进行比较,直到找到正确的位置为止。

 /** * 对从开始位置和结束位置的元素进行排序 * @param a 原始数组 * @param first 开始位置 * @param last 结束位置 */public static void insertionSort(int[] a,int first, int last){for(int unSorted = first+1; unSorted < last; unSorted++){int firstUnSorted = a[unSorted]; insertInOrder(firstUnSorted,a,first,unSorted-1);}}/** *  * @param element 当前无序部分的元素 * @param a 原始数组 * @param begin 有序部分的开始位置 * @param end 有序部分的结束位置 */public static void insertInOrder(int element, int[] a, int begin, int end) {int index = end; //从有序部分最后一个元素开始向前进行比较while((index >= begin) && (element < a[index])){a[index+1] = a[index];index--;}a[index+1] = element;}
时间复杂度:O(n^2)

0 0