算法和数据结构---排序--简单选择排序
从今天开始努力。
头文件。
1 2 3 4 5 6 7 8 9 10 11 12 | #define MAXSIZE 20 /* 一个用作示例的小顺序表的最大长度 */ typedef int KeyType; /* 定义关键字类型为整型 */ typedef struct { KeyType key; /* 关键字项 */ InfoType otherinfo; /* 其它数据项,具体类型在主程中定义 */ } RedType; /* 记录类型 */ typedef struct { RedType r[MAXSIZE+1]; /* r[0]闲置或用作哨兵单元 */ int length; /* 顺序表长度 */ } SqList; /* 顺序表类型 */ |
返回最小值的函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | int SelectMinKey(SqList L, int i) { /* 返回在L.r[i..L.length]中key最小的记录的序号 */ KeyType min; int j,k; k=i; /* 设第i个为最小 */ min=L.r[i].key; for (j=i+1;j<=L.length;j++) if (L.r[j].key<min) /* 找到更小的 */ { k=j; min=L.r[j].key; } return k; } |
简单选择排序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | void SelectSort(SqList *L) { /* 对顺序表L作简单选择排序。*/ int i,j; RedType t; for (i=1;i<(*L).length;++i) { /* 选择第i小的记录,并交换到位 */ j=SelectMinKey(*L,i); /* 在L.r[i..L.length]中选择key最小的记录 */ if (i!=j) { /* 与第i个记录交换 */ t=(*L).r[i]; (*L).r[i]=(*L).r[j]; (*L).r[j]=t; } } } |
更简单的用代码表示为
1 2 3 4 5 6 7 8 9 10 | void selectsort() { for ( int i=0;i<n-1;i++) { for ( int j=i+1;j<n;j++) { if (x[j]<x[i]) swap(x[j],x[i]); } } } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步