排序算法之直接选择排序

直接选择排序
基本思想

直接选择排序(Straight Select Sorting) 是一种简单的排序方法,它的基本思想是:每一次从待排序的数据元素中选出最小(或最大)的一个元素,通过交换存放在序列的起始位置(或最后一个位置),直到全部待排序的数据元素排完 。

排序过程

第一次从R[0]-R[n-1]中选取最小值(或最大值),与R[0]交换,第二次从R[1]-R[n-1]中选取最小值(或最大值),与R[1]交换,…,第i次从R[i-1]-R[n-1]中选取最小值(或最大值),与R[i-1]交换,…,第n-1次从R[n-2]-R[n-1]中选取最小值(或最大值),与R[n-2]交换,总共通过n-1次,得到一个按排序码从小到大(或从大到小)排列的有序序列。
这个算法也可以优化为在每次遍历数组寻找选择最值元素时,同时选出最大和最小的两个元素,然后进行交换,可以减少排序时间。
begin是需要遍历寻找最值元素的区间的第一个元素,end是需要遍历寻找最值元素的区间的最后一个元素,[begin, end]是一个闭区间,这个区间从[0, n-1]逐渐缩小至begin与end相遇,每次在区间内遍历,寻找最小元素下标min_index和最大元素下标max_index,以升序排序为例,然后将最小元素与区间内第一个元素交换,最大元素与区间最后一个元素进行交换,然后begin++,end–,直到begin与end相遇,此时即完成了整个数组的升序排序。
在这里插入图片描述

C语言代码实现
// 交换函数
void Swap(int* a
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值