算法入门之插入排序

来源:互联网 发布:食品科学与数据分析 编辑:程序博客网 时间:2024/05/25 18:11

虽然很早在这里安家了,但是到现在没写过一篇博文,今决定从今天开始将开始用博文记录我的学习点滴,供自己回顾,若能给他人一点启示,那便是好事成双。今天就写一下一个算法的入门--插入排序。

伪代码:

     

for i<- 2 to length[A]    do key <- a[i]    j<- i-1   //比较得到插入位置同时将前面排好序的向后移    while j>0 and A[j] > key           A[j+1] <- A[j]          j <- j-1    A[j+1] <- key //插入


下面是Java代码实现:

public static int[] insertSortAsc(int[] arr){if(arr.length < 2){return arr;}for(int i=1; i<arr.length; i++){int key = arr[i];int j = i - 1;while(j>-1 && arr[j]>key){arr[j+1] = arr[j];j--;}arr[j+1] = key;}return arr;}

main方法中测试代码:

//随机生成一个长度为20的int类型数组        int[] array = getRandomArray(20);        System.out.println("未排序数组:" + Arrays.toString(array));insertSortAsc(array);System.out.println("插入排序好:" + Arrays.toString(array));


测试结果:

未排序数组:[58, 55, 93, 61, 61, 29, 68, 0, 22, 7, 88, 28, 51, 89, 9, 78, 98, 61, 20, 58]
插入排序好:[0, 7, 9, 20, 22, 28, 29, 51, 55, 58, 58, 61, 61, 61, 68, 78, 88, 89, 93, 98]