插入排序

来源:互联网 发布:iphone手机壳品牌知乎 编辑:程序博客网 时间:2024/06/13 08:51

开发过程中可能不会常用到复杂的算法。不过排序还是很常见的。今天学习一下插入排序(insertIntoSort)。

插入排序简单来说就是将一个数组分成两部分,前面部分是排好序的,后面部分是乱序的。通过将乱序部分的数值在有序的部分找到合适的位置,并将其插入进去。

在算法导论中,伪代码描述的for循环是2~A.length()。是因为书中假定数组开始位置是从1开始的,而实际数组开始是从0开始的,所以在写代码的时候要留意(记录下来,怕忘记)。


上代码好了 ,Java:

 

 private static void insterIntoSort(int arr[]) {        int key = 0;//当前准备插进去的数值        int i = 0;        for (int j = 1; j < arr.length; j++) {            i = j - 1;            key = arr[j];            while (i >= 0 && arr[i] > key) {                arr[i+1] = arr[i]; //这里用i+1不用j的原因是,因为在while循环里,是从左往右找合适位置                i = i-1;            }            arr[i+1] = key; //把key放到合适的位置        }    }
另外,最近在学python,也上一份python的代码

def insert_into_sort(array):#函数定义    for j in range(1, len(array)):        print j        key = array[j]        i = j - 1        while i >= 0 and array[i] > key:            print "i=%d" % i            array[i + 1] = array[i]            i = i - 1       #while循环结束        array[i + 1] = key        #for循环结束    print array#insert_into_sort函数结束# insert_into_sort([2, 1, 5, 8, 7, 3])insert_into_sort([5, 2, 4, 6, 1, 3])    #函数调用

原创粉丝点击