简单排序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;
        }
    }
}
相关推荐
寻星探路3 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
lly2024065 小时前
Bootstrap 警告框
开发语言
2601_949146535 小时前
C语言语音通知接口接入教程:如何使用C语言直接调用语音预警API
c语言·开发语言
曹牧6 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
KYGALYX6 小时前
服务异步通信
开发语言·后端·微服务·ruby
zmzb01036 小时前
C++课后习题训练记录Day98
开发语言·c++
猫头虎7 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
YUJIANYUE7 小时前
PHP纹路验证码
开发语言·php
仟濹7 小时前
【Java基础】多态 | 打卡day2
java·开发语言
孞㐑¥7 小时前
算法——BFS
开发语言·c++·经验分享·笔记·算法