已知如下程序段,请编写简单选择排序实现对关键字从小到大进行排序。 #include "stdio. h" #define MAXSIZE 20 //设记录不超过20个 typedef int KeyType; //设关键字为整型量(int型) typedef char InfoType; typedef struct { //定义每个记录(数据元素)的结构 KeyType key; //关键字 InfoType name[20];//其它数据项 }RedType; typedef struct { //定义顺序表的结构 RedType r[MAXSIZE +1 ];//存储顺序表的向量 //r[0]一般作哨兵或缓冲区 int length; //顺序表的长度 }SqList; void SelectSort(SqList &L) { } int main() { SqList L={0,"",8,"梁鑫梨",11,"万里",2,"欧鹏佳",5,"彭俊杰",9,"聂精威",14,"李杰文",15,"钟阳俭" ,13,"夏鑫",25,"黄俊",26,"伍洁",21,"龚威",22,"曾满意"}; L. length=12; SelectSort(L); printf("排完序后的结果为:"); for(int i=1;i<=L. length;i++) { printf("%d %s,",L. r[i]. key,L. r[i]. name);完善这段代码利用选择排序对关键字从小到大排序
时间: 2023-07-19 16:30:40 浏览: 52
好的,这里是利用选择排序对关键字从小到大排序的代码,你可以将其添加到 `SelectSort` 函数中:
```c
void SelectSort(SqList &L) {
int i, j, minIndex;
RedType temp;
for (i = 1; i < L.length; i++) {
minIndex = i;
for (j = i + 1; j <= L.length; j++) {
if (L.r[j].key < L.r[minIndex].key) {
minIndex = j;
}
}
if (minIndex != i) {
// 交换 r[i] 和 r[minIndex]
temp = L.r[i];
L.r[i] = L.r[minIndex];
L.r[minIndex] = temp;
}
}
}
```
在这个实现中,我们使用了两层循环。外层循环从 `1` 开始,依次遍历整个顺序表,找到最小的元素并将其放到已排序部分的末尾。内层循环则是用于在未排序部分中查找最小元素的,从 `i+1` 开始遍历到 `L.length`。
在每次内层循环完成之后,我们会检查是否需要交换已排序部分的末尾和未排序部分的最小元素。如果最小元素不在已排序部分末尾,则需要进行交换。
最终,我们就可以实现将顺序表 `L` 按照关键字从小到大排序的功能了。
相关推荐
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)