插入排序

来源:互联网 发布:python 3.5.1 编辑:程序博客网 时间:2024/05/22 07:51

参考教材 《数据结构与算法》–裘宗燕
《算法》第四版
附关键码解释:
假设需要排序的是某种数据记录的序列,每个记录里有一个或多个支持排序的关键码。
在面向对象编程中,定义的结构体、数据结构实为一种抽象概念。例如想将1000个学生进行排序,那么如何进行排序呢?故可根据人为定义的关键码进行排序。例如学生的身高可作为一关键码。

    class record:        def __init__(self, key, datum):            self.key = key            self.datum = datum

插入排序,顾名思义其操作方式是插入,不断把一个个元素插入一个序列中,最终得到排序序列。
为了少用辅助空间,最合适的方法为将正在构造的排序序列嵌入到原来的表中。

Python描述:

def insert_sort(lst):    for i in range(1, len(lst)):        x= list[i]        j = i        while j > 0 and lst[j-1].key > x.key:            lst[j] = lst[j-1] #反序逐个后移,确定插入位置            j -= 1        lst[j] = x  

在计算机的实现中,为了要给插入的元素腾出空间,需要将其余所有元素在插入之前都右移一位。这种算法叫插入排序算法。
当前索引左边的所有元素都是有序的。

public class insertion{       public static void sort(Comparable[] a)    {        #将a[]按升序排序        int N = a.length;        for(int i = 1; i < N; i++)        {            for(j = i; j > 0 && less(a[j], a[j-1]);j--)                exch(a, j, j-1);        }    }}
原创粉丝点击