选择排序

本文详细介绍了选择排序算法的基本思想、过程及实现方法,并给出了具体的排序示例。此外还提供了选择排序的时间复杂度、空间复杂度等关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【分类】


 选择类排序


【基本思想】


 每一趟从待排序的数据元素中选出最小(最大)的元素,顺序放在待排序的数列最前,直到全部待排序的数据元素全部排完。


【特点】


 数据结构:数组

 稳定性:不稳定


【过程】


 初始关键字:『 852693140

 第一趟排序后:0,『526931487

 第二趟排序后:01,『26931487

 第三趟排序后:012,『6935487

 第四趟排序后:0123,『965487

 第五趟排序后:01234,『65987

 第六趟排序后:012345,『6987

 第七趟排序后:0123456,『987

 第八趟排序后:01234567,『89

 第九趟排序后:012345678,『9

 结果:           012345678



          

   排序过程           宏观过程


【复杂度与辅助空间】


 最差时间复杂度:O(n^2)

 最优时间复杂度:O(n^2)

 平均时间复杂度:O(n^2)

 所需辅助空间:O(1)


【实现方法】


 双重循环,外层i控制当前序列最小(最大)值存放的数组元素位置,内层循环j控制从i+1到n序列中选择最小的元素所在位置k。


【源程序】

[cpp]  view plain  copy
  1. void select_sort()  
  2. {  
  3.     int i,j,min;  
  4.     for (i = 0; i < n; i++)//i为已排序序列的末尾  
  5.     {  
  6.         min = i;  
  7.         for (j = i + 1; j < n; j++)//未排序序列  
  8.             if (a[j] < a[min])//找出未排序序列中的最小值  
  9.             min = j;  
  10.         if (min != i)  
  11.             swap(a[i],a[min]);//放到已排序序列的末尾,该操作很有可能把稳定性打乱,所以选择排序是不稳定的排序算法  
  12.     }  
  13. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值