简单排序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;
        }
    }
}
相关推荐
T1mzhou6 小时前
ARM64 Linux 6.10内核启动流程7-ioremap和readl writel
linux·服务器·c语言
Keven_117 小时前
算法札记:ACM适用的很骚的C++语法(持续更新)
开发语言·c++
脉动数据行情17 小时前
C# 实现德指 DAX 期货 WebSocket 实时行情监听
开发语言·websocket·c#
大圣编蚕8 小时前
Java ByteArrayInputStream 详解:从入门到实战
java·开发语言·算法
菜鸟~noob2338 小时前
【电子战】第02篇:能量检测器 vs. 相关检测器【含matlab代码】
开发语言·matlab
OpenAnolis小助手9 小时前
一句话看透 JVM,SysOM 诊断 Skill 新增 Java 应用诊断能力
java·开发语言·jvm·阿里云·操作系统控制台·sysom
小玮看世界9 小时前
[Python]OD算法在OD实际运用转化参考清单
开发语言·python·算法
ForteScarlet9 小时前
Kotlin 2.4.20 现已发布,新特性多不多?
android·java·开发语言·开源·kotlin·jetbrains
萧瑟余晖9 小时前
Java深入解析篇六十二之安全机制详解
java·开发语言
菜鸟~noob23310 小时前
【电子战】 第01篇:噪声、门限与虚警/检测概率(PFA/PD)【含matlab代码】
开发语言·matlab