数据结构(Java)--排序

本文详细介绍了排序算法,包括直接插入排序、二分插入排序、希尔排序、冒泡排序、快速排序、选择排序和归并排序的工作原理、时间复杂度和稳定性分析。特别讨论了快速排序在不同情况下的时间复杂度,以及如何根据数据特性选择合适的排序算法。
摘要由CSDN通过智能技术生成
排序的基本概念
    • (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
反之,若排序过程中要进行数据的内、外存交换,则称之为外部排序
(简称
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值