java插入排序

来源:互联网 发布:通达信看盘软件 编辑:程序博客网 时间:2024/06/05 23:51

插入排序适合序列中已经有部分数据是已经排序过的状态。

int[] a = {222,44,11,63,84,24,53,123,25,98,76,34};挨个读取数组a中的每个元素,将它与前面的数做对比,如果比前面的小就将前面的数向后移,当移动停止时,将该数填充到空出的位置。

第一次:222前面没有数不做变化。

第二次:44小于222,将222后移一位变成了{x,222,11,63,84,24,53,123,25,98,76,34},最后将44填充到x的位置(移动222后空出的位置),数组变成了{44,222,11,63,84,24,53,123,25,98,76,34}

第三次:11小于222,222向后移动一位变成{44,x,222,63,84,24,53,123,25,98,76,34},11再和44比较,11小于44,44向后移动一位变成{x,44,222,63,84,24,53,123,25,98,76,34}

                 再将11填写到x的位置,变成{11,44,222,63,84,24,53,123,25,98,76,34}。

下面附上代码:

import java.util.Arrays;public class InsertSort {public static void main(String args[]){int[] a = {222,44,11,63,84,24,53,123,25,98,76,34};insertSort(a);System.out.println(Arrays.toString(a));}private static void insertSort(int[] a) {for(int i=1;i<a.length;i++){int temp = a[i]; int index = i-1;while(index >=0 && temp < a[index]){a[index + 1] = a[index];index -- ;}a[index+1] = temp;}}}


1 0