为了讲清楚排序算法的代码,我先提供一个用于排序用的顺序表结构,此结构也将用于之后我们要讲的所有排序算法。
/* 用于要排序数组个数最大值,可根据需要修改 */
#define MAXSIZE 10
typedef 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;
}
好了,说了这么多,我们来看第一个排序算法。