十大排序算法之选择排序

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

选择排序

选择排序是一种简单直观的排序方法。
它的基本算法思想就是遍历一组数据,选一个最大或最小的放在首位,然后再遍历后选一个第二大或第二小的放在第二位,以此类推,直到结束。

这个算法思想很容易理解,我们直接看代码(C#实现):


			//定义一个整型数组
            int[] arr01 = new int[] { 9, 1, 4, 3, 2, 8, 6, 7, 5, 0 };

            //定义一个temp用以交换值,一个indexOfMin保存最小值的角标
            int temp, indexOfMin;

            //选择排序
            for (int i = 0; i < arr01.Length - 1; i++)
            {
                //将每次遍历的第一个值赋给min
                indexOfMin = i;

                for (int j = i + 1; j < arr01.Length; j++)
                {
                    if (arr01[i] > arr01[j])
                    {
                        indexOfMin = j;
                    }
                }

                //如果indexOfMin != i,则说明最小值需要变更
                if (indexOfMin != i)
                {
                    temp = arr01[indexOfMin];
                    arr01[indexOfMin] = arr01[i];
                    arr01[i] = temp;
                }
            }

            //打印看看是否正确
            Console.WriteLine("排序后的数组为:");
            for (int i = 0; i < arr01.Length; i++)
            {
                Console.Write(arr01[i] + " ");
            }
            
好了,选择排序就说到这里。关于选择排序的优化就简单说一下好了。
我们可以在一次遍历中既确定最小值,又确定最大值,也就是一次排两个,一个放在头,一个放在尾,很简单吧!
有疑问的可以私信博主。
点个关注,给个赞呗!
王立柱《C语言程序设计》3.5.3 c语言 阅读详情

相关推荐

十大排序算法(冒泡排序、插入排序选择排序、希尔排序、堆排序、快排、归并排序、桶排序、计数排序、基数排序

十大排序算法(冒泡排序、插入排序选择排序、希尔排序、堆排序、快排、归并排序、桶排序、计数排序、基数排序十大排序的思想和代码的实现!!!

2301_80215560的博客 5万+

十大排序算法小结

相关博客: 排序算法:冒泡排序、插入排序选择排序、希尔排序 排序算法:归并排序、快速排序 排序算法:桶排序、计数排序、基数排序 排序算法:堆排序   前面学习了10中最基本的排序算法,这篇博客主要是对这10种排序算法的小结: 1、这十种排序算法可以分为两大类: (1)非线性时间排序算法:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比...

张维鹏的博客 2237

十大经典排序算法总结整理

参考文章: 十大经典排序算法最强总结:https://www.cnblogs.com/guoyaohua/p/8600214.html 排序算法总结:https://www.runoob.com/w3cnote/sort-algorithm-summary.html 术语说明 内排序:所有排序操作都在内存中完成; 外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数...

ytusdc的博客 6897

数据结构十大排序

打开算法大门,从排序开始

英雄哪里出来 7万+

【C++】十大排序算法之 冒泡排序 & 选择排序

排序算法是《数据结构算法》中最基本的算法之一。

K1_uestc的博客 1829

十大经典排序算法选择排序算法

十大经典排序算法选择算法(包含C++和Python程序,即粘即用,注释清晰)

yzyzy12138的博客 141

十大排序算法选择排序

- 面试必用的十大排序算法,大家一起互相学习啊!

南城果宝的满腹经纶 5465

十大排序算法】(三)选择排序算法

一、基本思想 选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 二、算法分析 1、算法描述 n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果。具体算法描述如下: 初始状态:无序区为...

riemann_的博客 1722

scratch之十大经典排序算法-选择排序

十大经典排序算法简介0、算法概述0.1 算法分类十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比...

IT_Scratch的博客 2426

数据结构算法十大排序算法选择排序

数据结构算法十大排序算法选择排序 package TopTenSortingAlgorithms; import java.util.Arrays; import java.util.Scanner; public class SelectionSort { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int[] nums = new

... 457

十大经典排序算法-选择排序算法详解

一、什么是选择排序 1.概念 选择排序(Selection sort)是最简单直观的一种算法,基本思想为每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止 2.算法原理 这是一个无序数列:1、5、4、2、6、3,我们要将它按从小到大排序。按照选择排序的思想,我们要找到最小的元素,将它移到队首 首先开始第一轮最小元素的比较 先假定最小元素为第一个元素:1 第一步:比较1和5,1比5小,最小元素为1 第二步:比较1和4,1比4小,最小元素为1 经过一轮比较后,找到1为最小的

qq_35344198的博客 1万+

数据结构算法十大经典排序算法深度解析:冒泡排序选择排序、插入排序、归并排序、快速排序、希尔排序、堆排序、计数排序、桶排序、基数排序

在本文中,我们将逐一介绍每种排序算法的基本原理、实现步骤、性能特点以及适用场景。通过具体的代码示例和性能比较,读者将能够深入理解每种算法的优势与局限,从而在实际应用中做出更加合理的选择

倔强的石头的博客 9576

compareto排序_十大排序算法, java实现, 如何选择

衡量算法的指标时间复杂度: 执行这个算法需要消耗的时间空间复杂度: 这个算法需要占用多少内存空间稳定性: 假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的.In-place是指不占用额外内存, Out-...

weixin_40006965的博客 299

十大排序算法的python实现(二:选择排序和堆排序

编程小白最近在学习算法,自己用python写了十大排序算法,发出来供大家参考。如有不足之处,欢迎批评讨论。第二是两种选择排序:直接选择排序和堆排序

moyao_miao的博客 417

十大经典排序算法之-选择排序

选择排序思想 选择排序的思想非常简单: 首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。这种方法叫做选择排序,因为它在不断地选择剩余元素之中的最小者。 ——《算法(第四版)》 此算法的实现非常简单,通俗地说就是一共遍历n...

xiyue001的博客 2676

python用选择法对10个整数排序_用Python手写十大经典排序算法

作者 | hustcc排序算法是《数据结构算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括:关于时间复杂度:平方阶 (O(n2)) 排序 各类简单排序...

weixin_39827905的博客 1755

十大经典排序算法(冒泡排序选择排序、插入排序、快速排序、归并排序

例如对于含有 n 个记录的无序表,首先默认表中每个记录各为一个有序表(只不过表的长度都为 1),然后进行两两合并,使 n 个有序表变为 ⌈n/2⌉ 个长度为 2 或者 1 的有序表(例如 4 个小有序表合并为 2 个大的有序表),通过不断地进行两两合并,直到得到一个长度为 n 的有序表为止。这种归并排序方法称为:2-路归并排序。本节介绍一种不同于插入排序选择排序排序方法——归并排序,其排序的实现思想是先将所有的记录完全分开,然后两两合并,在合并的过程中将其排好序,最终能够得到一个完整的有序表。.....

weixin_59803490的博客 1961
上一篇: 十大排序算法之冒泡排序
下一篇: C#中的二维数组
第五枫咏
博客等级 码龄7年 60粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值