简单排序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 分钟前
【Web APIs】浏览器本地存储 ② ( window.sessionStorage 本地存储常用 API 简介 | 代码示例 )
开发语言·前端·javascript·localstorage·sessionstorage·web apis·浏览器本地存储
郑州光合科技余经理3 分钟前
私有化B2B订货系统实战:核心模块设计与代码实现
java·大数据·开发语言·后端·架构·前端框架·php
chillxiaohan5 分钟前
GO学习踩坑记录
开发语言·学习·golang
2301_7644413313 分钟前
python实现罗斯勒吸引子(Rössler Attractor)
开发语言·数据结构·python·算法·信息可视化
探序基因14 分钟前
R语言-使用pheatmap函数画热图
开发语言·r语言
-凌凌漆-16 分钟前
【JS】var与let的区别
开发语言·前端·javascript
ExiFengs19 分钟前
Java使用策略模式实现多实体通用操作的优雅设计
java·开发语言·设计模式·策略模式
茶本无香19 分钟前
设计模式之三—工厂模式:灵活对象创建的艺术
java·开发语言·设计模式·工厂模式
超级无敌大学霸23 分钟前
c语言整型提升
c语言·开发语言
困惑阿三27 分钟前
利用 Flexbox 实现无需媒体查询(Media Queries)的自动响应式网格。
开发语言·前端·javascript