为了讲清楚排序算法的代码,我先提供一个用于排序用的顺序表结构,此结构也将用于之后我们要讲的所有排序算法。

    1. /* 用于要排序数组个数最大值,可根据需要修改 */
    2. #define MAXSIZE 10
    3. typedef struct{
    4. /* 用于存储要排序数组,r[0]用作哨兵或临时变量 */
    5. int r[MAXSIZE + 1];
    6. /* 用于记录顺序表的长度 */
    7. int length;
    8. } SqList;

    另外,由于排序最最常用到的操作是数组两元素的交换,我们将它写成函数,在之后的讲解中会大量的用到。

    1. /* 交换L中数组r的下标为i和j的值 */
    2. void swap(SqList *L, int i, int j){
    3. int temp = L->r[i];
    4. L->r[i] = L->r[j];
    5. L->r[j] = temp;
    6. }

    好了,说了这么多,我们来看第一个排序算法。