为了讲清楚排序算法的代码,我先提供一个用于排序用的顺序表结构,此结构也将用于之后我们要讲的所有排序算法。
/* 用于要排序数组个数最大值,可根据需要修改 */#define MAXSIZE 10typedef struct{/* 用于存储要排序数组,r[0]用作哨兵或临时变量 */int r[MAXSIZE + 1];/* 用于记录顺序表的长度 */int length;} SqList;
另外,由于排序最最常用到的操作是数组两元素的交换,我们将它写成函数,在之后的讲解中会大量的用到。
/* 交换L中数组r的下标为i和j的值 */void swap(SqList *L, int i, int j){int temp = L->r[i];L->r[i] = L->r[j];L->r[j] = temp;}
好了,说了这么多,我们来看第一个排序算法。
