博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
72-排序的基本概念
阅读量:2042 次
发布时间:2019-04-28

本文共 840 字,大约阅读时间需要 2 分钟。

1. 排序

  所谓排序就是整理“表”中的记录,使之按关键字递增(或递减)有序排列。

  假设含n个数据元素的序列为{ R1,R2,...,Rn R 1 , R 2 , … . . . , R n },其相应的关键字分别为{ K1,K2,...,Kn K 1 , K 2 , … . . . , K n }这些关键字相互之间可以进行比较,即在它们之间存在着这样一个关系:Kp1 ≤ Kp2 ≤ … ≤ Kpn,使得序列成为一个按关键字有序的序列{ Rp1, Rp2 , …,Rpn},这样的操作就称为排序。

来看一个例子:

这里写图片描述
图1-排序

  假设现在有一张成绩表,在这张表中有每个学生的姓名和成绩,在排序前表中的每个学生的成绩都是无序的,当我们对成绩表中每个学生按成绩进行排序后就可以很直观的看到成绩的变化了,每个学生的成绩都是以增序的方式进行排列的,比如:王二和小明的成绩是一样的,而赵六的成绩是最高的。

2. 排序的稳定性

  如果在序列中有两个数据元素r[i]和r[j],它们的关键字k[i] == k [j],且在排序之前,对象r[i]排在r[j]前面。如果在排序之后,对象r[i]仍在r[j]前面,则称这个排序方法是稳定的,否则称这个排序方法是不稳定的。

这里写图片描述
图2-排序的稳定性

  如图2所示,王二和小明的成绩都是67,在排序前,王二的位置是在小明的前面,如果在排序后王二依然在前面,那么这个排序是稳定排序,反之就是非稳定排序。

3. 排序分类

  前面我们在学习查找时知道:查找也分为内部查找和外部查找,对于排序也是如此,排序分类主要分为内排序和外排序,在排序过程中,若整个表的数据都是放在内存中处理,排序时不涉及数据的内,外存交换的则称为内部内排序。反之,如果在排序时数据量非常大,需要进行内,外交换的,则称为外排序。

  基于比较的排序算法和不基于比较的排序算法有:如插入排序,交换排序,选择排序和归并排序是基于比较的排序算法;而像基数排序是不基于比较的排序算法。

你可能感兴趣的文章
flask_migrate
查看>>
解决activemq多消费者并发处理
查看>>
UDP连接和TCP连接的异同
查看>>
hibernate 时间段查询
查看>>
java操作cookie 实现两周内自动登录
查看>>
jstl 中获得session 里面值sessionScope
查看>>
Tomcat 7优化前及优化后的性能对比
查看>>
VisualVM 提示 tomcat 不受此jvm支持解决办法
查看>>
Java Guava中的函数式编程讲解
查看>>
Eclipse Memory Analyzer 使用技巧
查看>>
tomcat连接超时
查看>>
谈谈编程思想
查看>>
iOS MapKit导航及地理转码辅助类
查看>>
检测iOS的网络可用性并打开网络设置
查看>>
简单封装FMDB操作sqlite的模板
查看>>
iOS开发中Instruments的用法
查看>>
iOS常用宏定义
查看>>
被废弃的dispatch_get_current_queue
查看>>
什么是ActiveRecord
查看>>
有道词典for mac在Mac OS X 10.9不能取词
查看>>