首页 > 编程语言 >【基础算法】简单排序-选择排序

【基础算法】简单排序-选择排序

时间:2023-02-25 16:22:33浏览次数:37  
标签:int 无序 算法 有序 简单 排序 部分

【基础算法】简单排序-选择排序

将待排序数组分成有序部分和无序部分,无序部分初始长度为0,每次遍历有序部分,找到有序部分最小(最大)的数,和无序部分第一个数进行交换,使其变成有序部分。

选择排序

#include <stdio.h>
#include <malloc.h>

int main() {
    int n = 0;
    printf("请输入数组长度:");
    scanf("%d", &n);
    int* nums = malloc(sizeof(int) * n);
    for(int i=0; i<n; i++) {
        scanf("%d", nums+i);
    }
    // Sorting
    for(int i=0; i<n; i++) {
        int minNum = *(nums+i);
        int minIdx = i;
        for(int j=i; j<n; j++) {
            if(*(nums+j) < minNum) {
                minNum = *(nums+j);
                minIdx = j;
            }
        }
        *(nums+minIdx) = *(nums+i);
        *(nums+i) = minNum;
    }
    for(int i=0; i<n; i++) {
        printf("%d ", *(nums+i));
    }
    return 0;
}

算法时间复杂度:\(O(N^2)\)

标签:int,无序,算法,有序,简单,排序,部分
From: https://www.cnblogs.com/yangxuanzhi/p/17154686.html

相关文章

  • 基于6自由度飞行器的EKF和INS融合算法的MATLAB仿真
    1.算法描述       六自由度四轴飞行器,包括由四根杆组成的正四面体,所述正四面体的中心位置设有一个空心圆球,空心圆球上设有四根支杆分别与正四面体的四个顶点相......
  • m基于K-means聚类算法和神经网络的模糊控制器设计matlab仿真
    1.算法描述       聚类就是按照某个特定标准把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽......
  • JOI 简单题选做
    就是把洛谷上评分为紫的题做了一下(汗)前两道题没做出来,暴露了自己在dp上的短板。イベント巡り2一开始想到贪心,但发现我们只要选\(k\)个即可,所以可以尝试一些更劣但......
  • 简单熟悉下设计模式
    寻找到底用的什么设计模式目录寻找到底用的什么设计模式11.背景11.1.海超写的es,在枚举里面完成了各个方法的调用.感觉很厉害看下12.先熟悉下23中设计模式1......
  • 推荐系统[八]算法实践总结V1:淘宝逛逛and阿里飞猪个性化推荐:召回算法实践总结【冷启动
    0.前言:召回排序流程策略算法简介推荐可分为以下四个流程,分别是召回、粗排、精排以及重排:召回是源头,在某种意义上决定着整个推荐的天花板;粗排是初筛,一般不会上复杂模型;......
  • set的自定义排序
    看下面的代码就好了structcmp{ booloperator()(constpair<int,int>&a,constpair<int,int>&b)const{ intlena=a.second-a.first+1; intlenb=b.second-b.firs......
  • 牛客网算法题:给定一个字符串,计算从做到右的字符出现的个数
    题目:给定一个字符串,计算出从做到右的字符出现的个数忽略字符计算后个数为1的数字例如原始输入字符串:"​​​aabccccaaa​​​"期望输出:“​​​a2bc4a3​​”解释:从左到......
  • JavaScript最简单的发布/订阅模式
    以下的是在ES6语法上构建的,非常适用于常见的应用场景//消息通知//发布/订阅模式classYLNotificationMessages{constructor(){//事件对象:存放事件的订阅......
  • “简单的编程方面的喧嚣”是一个谎言
    点击诱饵趋势让我发疯。一些作者承诺容易赚钱。他们说兼职经营企业是一项简单的任务。你是一名程序员,所以你应该能够自动化你的业务,对吧?不要买垃圾。快速致富的计划一直......
  • 每日算法--2023.2.25
    1.力扣373--和最小的k个数对classSolution{classNode{publicintsum;publicinti;publicintj;Node(intsum,inti,i......