简单排序c语言版

参考视频:

数据结构合集 - 简单选择排序(选择排序)(算法过程, 效率分析, 稳定性分析)_哔哩哔哩_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;
        }
    }
}
相关推荐
大翻哥哥2 小时前
轻量级PHP网页在线客服系统 隐私聊天—— 可定制
开发语言·php
三十岁老牛再出发8 小时前
07.27&7.28每日总结
c语言·mysql
Wang's Blog8 小时前
Go-Zero 项目开发43:基于 Filebeat 收集各个服务的日志信息
开发语言·golang·go-zero·filebeat
丈剑走天涯10 小时前
JDK 17 正式特性
java·开发语言
秋田君10 小时前
QT_QFontDialog类字体对话框
开发语言·qt
W_3260010 小时前
VSCode 进阶
c语言·vscode
圣光SG10 小时前
Java操作题练习(七)
java·开发语言·算法
麻瓜老宋11 小时前
AI开发C语言应用按步走,表达式计算器calc的第二十三步,多行输入、进制输出、错误恢复、常量折叠、配置加载等
c语言·开发语言·atomcode
q5673152311 小时前
企业级 HTTP 代理采购选型:技术评估清单 15 项
开发语言·网络·爬虫·网络协议·http·隧道ip·代理ip
天天进步201512 小时前
Python全栈项目--智能办公自动化系统
开发语言·python