一、排序的定义
    排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。

二、排序的分类
    1.根据排序的稳定性,排序可以分为稳定排序和非稳定排序。
       简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,我们就
说这种排序方法是稳定的。反之,就是非稳定的。
       比如:一组数排序前是a1,a2,a3,a4,a5,其中a2=a4,经过某种排序后为a1,a2,a4,a3,a5,
则我们说这种排序是稳定的,因为a2排序前在a4的前面,排序后它还是在a4的前面。假如变成a1,a4,
a2,a3,a5就不是稳定的了。
    2.根据数据在排序过程中所在的位置可以分为:内排序和外排序
      在排序过程中,所有需要排序的数都在内存,并在内存中调整它们的存储顺序,称为内排序;
      在排序过程中,只有部分数被调入内存,并借助内存调整数在外存中的存放顺序排序方法称为外排序。

三、常用的排序算法
    1.冒泡法排序
        将相邻的两个数比较,将小的调到前头
    2.选择排序
       对待排序的记录序列进行n-1遍的处理,第i遍处理是将L[i..n]中最小者与L[i]交换位置。这样,经过i遍处理之后,前i个记录的位置已经是正确的了。
    3.快速排序
      快速排序的实现基于分治法,具体分为三个步骤。假设待排序的序列为L[m..n]。
分解:序列L[m .. n]被划分成两个可能为空的子序列L[m .. pivot-1]和L[pivot+1 .. n],使L[m .. pivot-1]的每个元素均小于或等于L[pivot],同时L[pivot+1.. n]的每个元素均大于L[pivot]。其中L[pivot]称为这一趟分割中的主元(也称为枢轴、支点)。
解决:通过递归调用快速排序,对子序列L[m .. pivot-1]和L[pivot+1 .. r]排序。
合并:由于两个子序列是就地排序的,所以对它们的合并不需要操作,整个序列L[m .. n]已排好序。
    4.插入法排序
       经过i-1遍处理后,L[1..i-1]己排好序。第i遍处理仅将L[i]插入L[1..i-1]的适当位置,使得L[1..i]又是排好序的序列。
    5.希尔排序(缩小增量法)
      属于插入类排序,是将整个无序列分割成若干小的子序列分别进行插入排序 
排序过程:先取一个正整数d1    6.归并排序
 将两个(或两个以上)有序表合并成一个新的有序表;即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。
    6.堆排序
     n个关键字序列Kl,K2,…,Kn称为堆,当且仅当该序列满足如下性质(简称为堆性质)
(1) ki≤K2i且ki≤K2i+1 或(2)Ki≥K2i且ki≥K2i+1(1≤i≤ )
若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则 堆 实质上是满足如下性质的完全二叉树:树中任一非叶结点的关键字均不大于(或不小于)其左右孩子(若存在)结点的关键字。 
   
参考资料:     排序算法比较(doc)
第十章 排序(ppt)
百度百科:快速排序http://baike.baidu.com/view/115472.htm 百度百科:希尔排序法http://baike.baidu.com/view/1110250.htm 百度百科:冒泡算法http://baike.baidu.com/view/977324.htm 百度百科:归并排序法http://baike.baidu.com/view/547332.html 百度百科:堆排序http://zhidao.baidu.com/question/32478724.html