排序需要用到的结构和函数
# 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 ; }
选择排序序程序
每次找一个最小的数出来
/* 对 顺 序 表 L 作 简 单 选 择 排 序 */ void SelectSort ( SqList *L){ int i, j, min ; for (i = 1; i < L- > length ; i++) { min = i;/* 将 当 前 下 标 定 义 为 最 小 值 下 标 */ /* 循 环 之 后 的 数 据 */ for (j = i + 1; j <= L- > length ; j++) { /* 如 果 有 小 于 当 前 最 小 值 的 关 键 字 */ if (L- >r[min ] > L- >r[j]) /* 将 此 关 键 字 的 下 标 赋 值 给 min */ min = j; } if (i != min ) /* 若 min 不 等 于 i , 说 明 找 到 最 小 值 */ /* 交 换L->r[i] 与L- >r[min ] 的 值 */ swap (L, i, min ); } }