排序算法六:选择排序之直接选择排序

排序算法六:选择排序之直接选择排序


声明:引用请注明出处http://blog.csdn.net/lg1259156776/web


引言

在个人博文《“主宰世界”的10种算法短评》中给出的首个算法就是高效的排序算法。本文将对排序算法作一个全面的梳理,从最简单的“冒泡”到高效的堆排序等。算法

系列博文的前五篇分别讲述了插入排序和交换排序,本文介绍选择排序中直接选择排序这一彷佛是最慢的排序算法。svg


排序相关的的基本概念

  • 排序:将一组杂乱无章的数据按必定的规律顺次排列起来。
    • 数据表( data list): 它是待排序数据对象的有限集合。
    • 排序码(key):一般数据对象有多个属性域,即多个数据成员组成,其中有一个属性域可用来区分对象,做为排序依据。该域即为排序码。每一个数据表用哪一个属性域做为排序码,要视具体的应用须要而定。
  • 分类
    • 内排序:指在排序期间数据对象所有存放在内存的排序;
    • 外排序:指在排序期间所有对象个数太多,不能同时存放在内存,必须根据排序过程的要求,不断在内、外存之间移动的排序。

排序算法的分析

排序算法的稳定性

若是在对象序列中有两个对象.net