Linux C 算法——排序

     排序(Sort)是将无序的记录序列(或称文件)调整成有序的序列。

     为了方便讨论,在此首先要对排序下一个确切的定义:

假设含有n个记录的序列为

             { R1、R2、,。。。Rn }

其相应的关键字序列为

             {K1、K2,。。。。Kn}

需确定1,2,。。。,n的一种排列 p1,p2,。。。pn,使其相应的关键字满足如下的非递减(或非递增)关系

            Kp1 <= Kp2 <=........<= Kpn

即使这个序列称为一个按关键字有序的序列

           {Rp1,Rp2,...., Rpn}

这样的操作称为排序

 

排序分类:

1、稳定排序和非稳定排序

    假设关键字 Ki = Kj (1 <= i <= n , 1<= j <= n , i != j ),且在排序前的序列中 Ri 领先于 Rj (即 i < j)。若在排序后的序列中,Ri 仍领先于 Rj ,则称所用的排序方法是稳定的;反之,若可能使排序后的序列中Rj 领先于 Ri ,则称所用的排序方法是不稳定的的。

2、内排序和外排序

    内排序指的是待排序记录存放在计算机随机存储器中进行的排序过程;外排序是指待排序记录的数量很大,以致内存依次不能容纳全部记录,在排序过程中尚需对外存进行访问的排序过程。

总之,在排序的过程中需进行下列两种基本操作:1) 比较两个关键字的大小 ;2)将记录从一个位置移动到另一个位置;

下面讨论内排序:

 

一、插入排序

1、直接插入排序

        直接排序是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表;

        设待排文件f = (R1  R2 ........... Rn)相应的 key 集合为k = {k1  k2  ........kn },其排序方法是:

        现将文件中的(R1)看成只含一个记录的有序子文件,然后从R2起&#

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值