算法 排序算法之插入排序

来源:互联网 发布:安全的网络管理规范 编辑:程序博客网 时间:2024/06/02 01:40

package SortArith;/** * 插入排序 * @author lwk * 时间复杂度O(2) * 稳定排序 */public class InsertSort {public static void main(String[] args) {int[] array={9,7,8,6,5,4,3,2,1};insertSort(array);for(int i=0;i<array.length;i++){System.out.print(array[i]);}}public static void insertSort(int[] array){if(array == null || array.length == 0){return;}//每个元素要插入时与其相邻左边元素进行比较,如果比左边元素小,则进行插入操作,插入左边//i=0元素为起始元素,已经放好位置,从i=1元素开始插入for (int i = 1; i < array.length; i++) {if(array[i] < array[i-1]){//寻找array[i]插入位置,将大于array[i]的元素分别右移一位int temp = array[i];//保存array[i]的值,因为在元素右移后,该值会覆盖(变化)int j;//声明j,下面有用for(j = i-1;j >= 0 && array[j] > temp;j--){//大于array[i]的元素元素右移array[j+1] = array[j];}//此时j为刚好小于array[i]的元素位置,j+1 为空出来待插入的位置//将待插入元素array[i]插入j+1位置array[j+1] = temp;}}}}

0 0