简单选择排序(Simple Selection Sort)

用油猴脚本实现B站消息批量清理:原理、开发与多端免登录实践 浏览器自动化脚本常被用于提升重复操作的效率,其中油猴脚本(Tampermonkey)以其轻量、可控、无需独立服务器的特性成为用户脚本管理的热门方案。它的核心原理是借助浏览器扩展机制,将符合URL匹配规则的JavaScript注入到指定页面,并复用当前已登录的Web会话状态,从而免去第三方平台的额外授权。在批量清理类场景中,油猴脚本可以通过请求封装、DOM识别、延迟随机化与控制阈值等工程化设计,在保障账号安全的前提下完成有限度的批量操作。无论是处理消息红点、批量导出数据还是优化网页界面,该技术都强调代码本地化 阅读详情

算法介绍

  简单选择排序的工作方式突出"选择"二字,每次从待排序数据中选择符合条件的元素放在已排序元素末尾。对于少量元素的排序,简单选择排序是一个有效的算法。

算法描述

  第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。

动图演示

在这里插入图片描述

算法分析

  时间复杂度:O(N2)

  空间复杂度:O(1)

  稳定性:不稳定

代码实现

// C++
void selectionSort(int a[], int length) {
	for (int i = 0; i < length - 1; ++i) {  // 遍历序列
    	int minIndex = i;  // 记录最小元素位置
        // 遍历无序序列寻找最小元素
        for (int j = i + 1; j < length; ++j) {
            if (a[j] < a[minIndex]) {  // 更新最小元素下标
                minIndex = j;
            }
        }
        // 将最小值放到已排序序列的末尾
        int temp = a[i];
        a[i] = a[minIndex];
        a[minIndex] = temp;
    }
}

算法优化

  上面代码一次遍历只是找出未排序序列中的最小值,其实我们可以在遍历过程中同时找出最小值和最大值,并把每次找出的最大值按顺序放到每次排列数据的末尾。时间复杂度还是 O(N^2) ,只相对前面的减少了一半遍历次数。

// C++
void selectionSort(int a[], int length) {
    int left = 0;  // 标记未排序序列左边界
    int right = length - 1;  // 标记未排序序列右边界
    
    while (left < right) {  // 遍历未排序序列
        int minIndex = left;  // 记录最小元素位置
        int maxIndex = left;  // 记录最大元素位置
            
        // 遍历无序序列寻找最小和最大元素
        for (int i = left + 1; i <= right; ++i) {
            if (a[i] < a[minIndex]) {  // 更新最小元素下标
                minIndex = i;
            }
            if (a[i] > a[maxIndex]) {  // 更新最大元素下标
                maxIndex = i;
            }
        }
        // 将最小值放到已排序序列的左末尾
        int temp = a[left];
        a[left] = a[minIndex];
        a[minIndex] = temp;
        // 处理最大值为a[left]的特殊情况
        if (maxIndex == left) {
            maxIndex = minIndex;
        }
        // 将最大值放到已排序序列的右末尾
        temp = a[right];
        a[right] = a[maxIndex];
        a[maxIndex] = temp;
		// 修改未排序序列范围
        ++left;
        --right;
    }
}

参考

数据结构与算法分析(Java语言描述)

数据结构(C语言版)

Apifox 自动化测试新增流程控制条件,复杂测试场景不再是问题 在 if 条件后的输入框填写请求接口得到的变量 viewed ,选择条件为「小于」,输入比较数值 10 ,并在 if 条件下添加「宠物下架处理」步骤。借助新增的自动化测试流程控制条件,测试人员就可以使用 Apifox 去实现更深层更多样的测试应用场景,帮助提升测试效率,减少复杂场景的测试操作。「查询新建宠物」、「修改宠物状态为已售出」和「查询宠物状态是否修改」步骤为当前在售宠物信息盘点的三个标准步骤,所以将这三个步骤合成一组。在循环中添加「查询在售宠物」和「修改宠物状态」步骤; 阅读详情

相关推荐

别再为跨页读写发愁了!STM32F407模拟I2C驱动24C256/512的避坑指南

本文详细解析了STM32F407模拟I2C驱动24C256/512的跨页写入问题,揭示了24C系列存储器'写满一页不会自动翻页'的关键机制,并提供了经过验证的分页写入算法和优化方案。通过GPIO时序优化、地址计算和错误处理等技巧,帮助开发者解决数据错乱、覆盖等常见问题,实现稳定可靠的EEPROM读写操作。

weixin_42631411的博客 377

简单选择排序

简单选择排序 选择排序(Selection sort)是一种简单直观的排序算法。 它的工作原理是: 1、第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置。 2、然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。 3、以此类推,直到全部待排序的数据元素的个数为零。 选择排序是不稳定的排序方法。 需求: 排序前:{4,6,8,7,9,2,10,1} 排序后:{1,2,4,5,7,8,9,10} 画图分析: ...

Pluto372的博客 1万+

微信小程序真机HTTPS证书链失效排查与修复指南

HTTPS证书信任链是保障Web通信安全的基础机制,其核心在于客户端能否通过服务器提供的证书及其上级签发者,逐级回溯至自身预置的可信根证书。在微信小程序场景中,由于客户端不复用系统根证书库,而是采用固化、精简且更新滞后的自研CA白名单,导致大量符合浏览器标准的证书(如Let’s Encrypt新版ISRG Root X1、TrustAsia等)在真机环境下触发net::ERR_CERT_AUTHORITY_INVALID错误。该问题本质是证书链断裂或签名算法/密钥长度不合规,而非域名配置或CORS策略异常。

weixin_33935636的博客 678

数据结构学习笔记——选择排序(简单选择排序和堆排序)

以递增为例,在每一趟的简单选择排序过程中,每次选取当前元素最小的元素,将其作为有序子序列的第i,i+1,……个元素,依次进行下去,即和第一个元素交换,依次进行交换,直到剩余一个元素,此时整个序列已经有序,每一趟简单选择排序可确定一个元素的最终位置。 递增的简单选择排序代码如下: ```c /*简单选择排序(递增)*/ void SelectSort1(int r[],int n) { int i,j,min,temp; for(i=0; i

小宇y的博客 1万+

C++控制台实现简单的注册登录

C++控制台实现简单的注册登录 #include<iostream> #include<string> #include <vector> #include <conio.h> void Display();//调用display显示switch()界面 void Register();//注册 void Enter();//登录 using nam...

乔路非 2万+

手把手教你用Wireshark国密版分析TLCP和IPSec协议(附下载地址)

本文详细介绍了Wireshark国密版在TLCP和IPSec协议分析中的实战应用,包括环境配置、协议解析、合规性检查及高级分析技巧。该工具针对商用密码算法(如SM2/SM3/SM4)进行了专项优化,支持GB/T 38636-2020 TLCP和GB/T 36968-2018 IPSec VPN等国家标准,帮助开发者与安全工程师高效完成密评分析任务。

weixin_29325955的博客 553

排序算法-简单选择排序

简单选择排序法就是通过n-i次关键字比较,找到最小的关键字下标,最后在替换n-i下标和最小下标的值。 简单排序的思想和冒泡排序的思想的区别是冒泡排序是相邻关键字两两比较,如果小,则直接替换,可能在一轮循环会进行多次值交换。而简单选择排序法是一轮循环找到最小关键字下标,最后进行最多一次替换。 简单选择排序算法 ...

白杨 3692

Windows/Linux双平台实战:QtCreator构建套件配置全攻略(含GCC/G++/GDB/CMake)

本文详细介绍了在Windows和Linux双平台下配置QtCreator构建套件的完整流程,涵盖GCC/G++、GDB和CMake等核心工具链的设置技巧。通过分步指导和实用示例,帮助开发者解决跨平台开发中的配置难题,提升Qt应用开发效率。特别针对QtCreator新手和需要在多平台切换的开发者提供了全面的配置指南。

weixin_28836507的博客 470

【排序算法】图解简单选择排序(图解堪比Debug显示每次循环结果)

本文主要介绍简单选择排序算法,通过图片一步步解释每一趟每一次的后移。代码通过C#实现,并输出每一次交换的情况和比较次数,方便各位小伙伴比较算法的优缺点。图解堪比Debug,一步步分析每次循环结果。...

baidu_33146219的博客 2万+

CPU系统级验证——测试激励——imperas公司riscvOVPsimPlus文件分析

本分析重点关注该repo向量扩展部分。 1. repo简介 该repo是指令集验证的仿真环境包括,大部分是指令集的测试用例,也包含了一些模拟器,如riscvOVPsimPlus。 主要介绍的是riscvOVPsimPlus指令集模拟器,riscvOVPsimPlus(下面统称ISS)是imperas公司在riscvOVPsim基础上扩充了向量扩展的指令集模拟器,该repo于今年9月份部分开源 什么叫部分开源呢? 首先该repo必须在imperas官网注册下载,而且必须是企业用户(免费邮箱人家瞧不上.

知识,既贵,又便宜。 4459

机械式激光雷达实现原理以及特性总结

本文介绍了机械式激光雷达的技术原理和核心特性。该技术通过机械旋转结构实现360°三维扫描,采用飞行时间法测距并生成点云数据。核心优势包括全向扫描、长距高精度和成熟度高,但存在体积大、成本高、可靠性受限等局限。典型应用于自动驾驶测试车、测绘建模等领域。与固态激光雷达相比,机械式在视场角和探测距离方面有优势,但在体积、成本和可靠性方面处于劣势。该技术目前主要应用于对成本不敏感的专业场景。

start_up_go的博客 262

c语言用sort函数选择排序,简单选择排序(Simple Selection Sort)的C语言实现

简单选择排序(Simple Selection Sort)的核心思想是每次选择无序序列最小的数放在有序序列最后演示实例:C语言实现(编译器Dev-c++5.4.0,源代码后缀.cpp)原创文章,转载请注明来自钢铁侠Mac博客http://www.cnblogs.com/gangtiexia#include #define LEN 6typedef float keyType;typedef str...

weixin_35417884的博客 1455

ZeroClaw安装、使用方法详细全解

ZeroClaw 是一个用 Rust 编写的轻量级、高性能、完全自主的 AI 助手运行时框架

洛星核的博客 618

选择排序—简单选择排序(Simple Selection Sort)

选择排序—简单选择排序(Simple Selection Sort) 基本思想 排序流程 算法实现 简单选择排序 改进二元选择排序 算法分析

wgiyq的博客 2040

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

简单选择排序算法(Simple Selection Sort)

简单选择排序算法(Simple Selection Sort) 此排序算法是将元素与其它元素依次比较,如果反序,则记录最小值或最大值对于的索引(index),等第二层for循环完毕后在根据最大值或最小值的索引所指向的值和i(第一层for循环的变量)指向的值进行互换位置。 此算法最大的特点是减少了排序元素交互位置的操作,提高了效率。 java代码实现 /** * 简单选择排序算法 ...

fly_zxy的专栏 509

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【排序】简单选择排序(Simple Selection Sort)

简单选择排序 思想:假如当前数字下标为i,那么从i后面的n-i个数字中选择最小值,如果该最小值比当前数字小,那么二者交换。 特点:比较次数多,交换次数少,只有找到最小值时才交换 import java.util.Arrays; public class test { public static void SelectSort(int[] nums) { for (int i = 0; i &...

heimu24的博客 215

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Simple Selection Sort(简单选择排序)

算法思想 一个拥有若干元素的序列,重复遍历序列,将其中最大(或最小)的元素找出来,按顺序放到指定位置,再将次大(或次小)元素找出来放到指定位置,直到所有元素排完。 实现步骤 以从小到大为例: 1.遍历序列,找出最小元素 2.将找出的最小元素与第一个元素互换位置 3.从第二个元素开始遍历,重复步骤1和2 源码 C/C++ void SimpleSe...

程序人生 545

简单选择排序(Simple Selection Sort)

参照《数据结构》(C语言版)严蔚敏著 #include struct SqList { int r[100]; int length; }; int slectMinKey(SqList L, int loc); void SelectSort(SqList &L); int main(void) { SqList L; L.r[1]=49; L.r[2]

一杯黄河水 939

简单选择排序(simple Selection Sort)

算法思想:每一趟从待排序的记录中选出关键字的最小记录,按照顺序放在已排序的记录序列的最后,直到全部排完。时间复杂度:O(n^2)–两层循环,并没有优化的方法。 空间复杂度:O(1)—–记录交换时候需要一个辅助空间算法特点:稳定性可以控制。可以用链式存储。记录移动次数较小。时间复杂度较高。不多BB,直接上代码:#include <iostream> #include <stdio.h> using

Super小龙的博客 517

排序之简单选择排序(Simple Selection Sort)

简单选择排序(Simple Selection Sort)基本思想:     首先在待排序序列中选择最小的元素与序列的第一个位置元素交换,然后在剩余序列中再找出最小的元素与第二个     位置元素交换。以此类推,直至第n-1个元素与第n个元素比较交换为止;(也可以理解为依次从无序区中选择最小的     元素插入到有序区的末尾位置) 算法操作: 设数组data[0......n-1]:

dangzhileiqaz的专栏 676

003.选择排序—简单选择排序(Simple Selection Sort)

//=============================以下为自己实现===============================#include &lt;stdlib.h&gt;#include &lt;stdio.h&gt;#define  aray_num 10void printfArray(int list[]){    int i;    for(i=0; i&lt;aray_...

EminentBoy的博客 272
上一篇: 一次性密码本(绝对无法破译)
下一篇: 直接插入排序(Straight Insertion Sort)
ali48
博客等级 码龄6年 31粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值