简单排序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;
        }
    }
}
相关推荐
森林里的程序猿猿15 分钟前
并发设计模式
java·开发语言·jvm
222you24 分钟前
四个主要的函数式接口
java·开发语言
smchaopiao2 小时前
Python中字典与列表合并的问题与解决方法
开发语言·python
敲代码的瓦龙2 小时前
Java?面向对象三大特性!!!
java·开发语言
2501_921649492 小时前
期货 Tick 级数据与基金净值历史数据 API 接口详解
开发语言·后端·python·websocket·金融·区块链
野犬寒鸦2 小时前
Redis复习记录day1
服务器·开发语言·数据库·redis·缓存
小菜鸡桃蛋狗2 小时前
C++——类和对象(下)
开发语言·c++
骑龙赶鸭2 小时前
java开发项目中遇到的难点,面试!
java·开发语言·面试
张人玉2 小时前
C#通讯(上位机)常用知识点
开发语言·c#·通讯·上位机开发