排序的基本概念
-
- (1)排序的数据序列与关键字
-
-
n数据序列指待排序的数据元素集合,排序是以关键字为基准进行的,n排序过程指将一个数据序列中的元素按照关键字值大小递增(或递减)的次序重新排列。n升序(正序):按关键字从小到大排列得到的序列。n降序(反序) :按关键字从大到小排列得到的序列。
-
(2)
排序算法的性能评价
(a)评价排序算法好坏的标准:
① 执行时间和所需的辅助空间
② 算法本身的复杂程度
(b)排序算法的空间复杂度
Ø若排序算法所需的辅助空间并不依赖于问题的规模n,即辅助空间是O(1),则称之为就地排序。
Ø非就地排序一般要求的辅助空间为O(n)。
(c)
排序算法的时间开销
大多数排序算法的时间开销主要是关键字之间的比较和记录的移动。有的排序算法其执行时间不仅依赖于问题的规模,还取决于数据序列中数据的初始状态(升序、降序、随机顺序?)。
(d)排序算法的基本操作
(a)比较两个关键字大小(比较)
keys[i] ? keys[j]
(b)将记录从一个位置挪到另一个位置(移动、交换)
private static void swap(int[] keys, int i, int j)
//交换keys[i]与keys[j]元素,i、j范围由调用者控制
{
int temp = keys[j];
keys[j] = keys[i];
keys[i] = temp;
}
(3)排序算法的稳定性(相同元素排序之后的顺序)
l当按照数据序列的主关键字进行排序时,排序结果是唯一的,否则排序结果不唯一。
在数据序列中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的。
l 若具有相同关键字的记录之间的相对次序发生变化,则称这种排序方法是不稳定的。
(4)内排序与外排序(与内存有关)
n在排序过程中,若整个数据序列都是放在内存中处理,即排序时不涉及数据的内、外存交换,则称之为内部排序(简称内排序);
n
反之,若排序过程中要进行数据的内、外存交换,则称之为外部排序
(简称