• 基本排序(五):基本排序算法的总结


    基本排序的基础

    • 假设一个主要的排序算法不比数据处理,如数据读入和读出慢,就没有必要寻找一个更快的算法。
    • 假设被排序的文件适合放在内存中。则排序方法称为“内部排序”。从磁盘上对文件排序称为“外部排序”。差别是内部排序能够非常easy的訪问不论什么元素,可是外部排序必须顺序訪问元素。至少在大的数据块是如此。
    • 排序程序訪问元素的方式:通过keyword进行比較、直接訪问整个元素移动;
    • 排序函数都包过3个參数:数组、带排序字数组的左边界和右边界 void(Item a[], int l, int r);
    • 排序算法的执行时间:对N个元素排序时
      • 选择排序、插入排序、冒泡排序与N2成正比;
      • 希尔排序(插入排序的改进)与 N(3/2) 成正比;
      • keyword-索引排序与 N 成正比;
    • 怎样减小开销,加快排序速度:(重要)
      • 改用一种更高效的算法
      • 缩短内部循环
      • 检查是否有能够跳过的比較或者交换操作
    • 排序的稳定性
        当待排序记录的keyword均不同样时。排序结果是惟一的,否则排序结果不唯一。
       在待排序的文件里,若存在多个keyword同样的记录,经过排序后这些具有同样keyword的记录之间的相对次序保持不变,该排序方法是稳定的;若具有同样keyword的记录之间的相对次序发生变化,则称这样的排序方法是不稳定的。
      注意:
        排序算法的稳定性是针对全部输入实例而言的。

      即在全部可能的输入实例中,仅仅要有一个实例使得算法不满足稳定性要求。则该排序算法就是不稳定的

    基本排序算法种类

    1. 选择排序

    选出数组中最小的元素,将它与数组中第一个元素交换,然后找出次小的元素。并将它与数组中第二个元素交换。。。直至整个数组排序完毕。即通过不断选出剩余数组中最小的元素实现。

    2. 插入排序和希尔排序

    通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描。找到对应位置插入。

    因而在从后向前扫描过程中,须要重复把已排序元素逐步向后移位。为最新元素提供插入空间。

    3. 冒泡排序

    遍历文件,假设紧邻的2个元素大小顺序不正确,就将两者交换,重复操作直至排序完毕

    4. 索引和指针排序、链表排序、keyword排序

    索引和指针排序、链表排序:间接排序,灵活性强,不会更改原始数据和keyword信息。

  • 相关阅读:
    2、成员对象与封闭类(类与类之间的关系——复合)
    3、常量成员函数
    4、友元
    1、this指针与静态成员
    模拟标准库vetor类写一个简易的变长整数型数组
    运算符重载为友元函数
    左值和右值
    浅拷贝和深拷贝
    赋值运算符
    函数的返回值是如何回到调用处的?
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7047564.html
Copyright © 2020-2023  润新知