插入排序

参考教材 《数据结构与算法》–裘宗燕
《算法》第四版
附关键码解释:
假设需要排序的是某种数据记录的序列,每个记录里有一个或多个支持排序的关键码。
在面向对象编程中,定义的结构体、数据结构实为一种抽象概念。例如想将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);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值