简单排序c语言版
2026/6/9 19:02:08 网站建设 项目流程

参考视频:

数据结构合集 - 简单选择排序(选择排序)(算法过程, 效率分析, 稳定性分析)_哔哩哔哩_bilibili

核心规则:

将最前面的数,当做是最小值,在剩下的数中找到真正最小的值去交换

6-11 简单选择排序

分数 20

作者 启迪-数据结构教研组

单位 广西科技大学

利用简单选择排序算法,将顺序表L中的元素从小到大进行排序。

函数接口定义:

void SimpleSelectionSort(List L);

其中List结构定义如下:

struct LNode{ int Data[MAXSIZE]; //Data为待排序序列数组 int Last; //Last为最后一个元素的数组下标 }; typedef struct LNode *List;

裁判测试程序样例:

#include<stdio.h> #include<stdlib.h> #define MAXSIZE 1000 struct LNode{ int Data[MAXSIZE]; //Data为待排序序列数组 int Last; //Last为最后一个元素的数组下标 }; typedef struct LNode *List; void SimpleSelectionSort(List L); List Create() { List L; L = (List)malloc(sizeof(struct LNode)); int j = 0,ch; /*输入待排序序列,输入 ctrl+Z 结束*/ while(scanf("%d",&ch)!=EOF) { L->Data[j] = ch; j++; } L->Last = j-1; return L; } int main() { int i; List L = Create(); SimpleSelectionSort(L); for(i=0;i<=L->Last;i++) printf("%d ",L->Data[i]); return 0; } /* 请在这里填写答案 */

输入样例:

99 66 45 33 37 10 22 13

输出样例:

10 13 22 33 37 45 66 99

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

C (gcc)

void SimpleSelectionSort(List L) { int i, j, min_idx, temp; // 外层循环:确定待排序区间的起始位置 i for (i = 0; i < L->Last; i++) { // 假设当前区间第一个元素是最小值 min_idx = i; // 内层循环:在待排序区间 [i, L->Last] 找最小值的下标 for (j = i + 1; j <= L->Last; j++) { if (L->Data[j] < L->Data[min_idx]) { min_idx = j; } } // 交换当前区间第一个元素和最小值元素 if (min_idx != i) { temp = L->Data[i]; L->Data[i] = L->Data[min_idx]; L->Data[min_idx] = temp; } } }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询