您好、欢迎来到现金彩票网!
当前位置:2019全年免费资料大全 > 桶链算法 >

排序 - AnalogElectronic的博客

发布时间:2019-07-07 07:11 来源:未知 编辑:admin

  )是计算机程序设计中的一个重要操作,它的功能是讲一个数据元素或记录的任意序列,重新排列成一个按关键字有序的序列。

  由于待排序的记录数量不同,使得排序过程中涉及的存储器不同,可将排序方法分为两大类:一类是内部排序,指的是带排序记录存放在计算机随机存储器中进行排序过程;另一类是外部排序,指的是待排序记录的数量很大,以致内存一次不能容纳全部记录,在排序过程中尚需对外存进行访问的排序过程。

  通常,在排序的过程中需要进行下列两种基本操作:(1)比较两个关键字的大小;(2)将记录从一个位置移动到另一个位置。前一个操作对大多数排序方法来说都是必要的,而后一个操作可以通过改变记录的存储方式来予以避免。

  (1)待排序的一组记录存放在地址连续的一组数据单元上。它类似于线性表的顺序存储结构,在序列中相邻的两个记录Rj和Rj+1它们的存储位置也相邻。在这种存储方式中,记录之间的次序关系由其存储位置决定,则实现排序必须借助移动记录。

  (2)一组待排序的记录存放在静态链表中,记录之间的次序关系由指针指示,则实现排序不需要移动记录,仅需修改指针即可。

  (3)待排序记录本身存储在一组地址连续的存储单元内,同时另设置一个指示各个记录存储位置的地址向量,在排序过程中不移动记录本身,而移动地址向量中这些记录的“地址”,在排序结束后在按照地址向量中的值来调整记录的存储位置。

  第二种存储方式下实现的排序称为链排序,在第三种存储方式下实现的排序称为地址排序。

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

  由于插入排序的基本操作是在一个有序表中进行查找和插入,查找操作可利用折半查找来实现,由此进行的插入排序操作称之为折半插入排序(Binary Insertion Sort)。

  2-路插入排序是在折半插入排序的基础上改进,其目的是减少排序过程中移动记录的次数,但为此需要n个记录的辅助空间。

  Shell’s Sort又称“缩小增量排序”(Diminishing Increment Sort),它也是一种属于插入排序类的方法,但在时间复杂度较前述几种方法有所改进。

  它的基本思想是:先将整个待排记录序列分割成若干个子序列分别进行直接插入排序进行改进得到的一种插入排序方法。

  首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序,则交换之,然后比较第二个和第三个记录的关键字。一趟排序过后的结果是使得关键字最大的记录被安置到最后一个记录的位置上。

  快速排序(Quick Sort)是对起泡排序的一种改进。它的基本思想是,通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。

  一趟快速排序的具体做法是:附设两个指针low和high,它们的初值分别为low和high,设枢轴记录的关键字为pivotkey,则首先从high所指位置起向前搜索到第一个关键字小于pivotkey的记录和枢轴记录互相交换,重复这两步直至low=high为止。

  Heap Sort只需要一个记录大小的辅助空间,每个待排序的记录仅占有一个存储空间。

  jquery/js实现一个网页同时调用多个倒计时(最新的)nn最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦!nnnn//jsn...

  这一篇,代码折腾的时间较长,完成之后都是一些小细节,主要有三:n1、引入的依赖错误;n2、启动配置错误;n3、xml文件的mapper命名空间错误。n一、完整的pom.xmlnn...

  本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。1、 Esp8266之 搭建开发环境,开始一个“hellow worl...

  扫二维码关注,获取更多技术分享nnn 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,...

  采用EasyUI 1.4.x 版本,默认default风格,异步加载页面,多Tab页展示,使用JSON文件模拟从后台动态获取数据。...

  接着上次的图书管理系统rnrn修改完问题后把SpringBoot成功部署到了服务器上rn测试了下api接口,能正常访问rn那么下面就是在服务器上部署前端的vue.js了rnrnrn这里的话我们要明确一...

  weixin_42727550:您好,如果做一个Andriod加密软件,将通讯录加密(是相对于其他软件的加密),如明文:李三,;密文:csdn2Q1,SDknsjhdioalka81818。允许其他APP获取通讯录信息,但是它获取的是加密后的信息,即密文。开发这样的加密软件需要哪些技术?

http://linkzoo.net/tongliansuanfa/325.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有