选择排序--(简单选择排序,堆排序,以及构建最大堆和最小堆)

本文介绍了选择排序的基本思想和不稳定性质,并提供了算法代码。接着,详细阐述了堆排序,包括最大堆和最小堆的概念,以及如何通过构建和调整堆进行排序。堆排序过程中涉及的建堆、插入和删除元素的操作也被详细解析,最后讨论了相关操作的时间复杂度。

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

选择排序

基本思想:每一趟在后面n-i+1个记录中选取关键字最小的记录作为有序序列中第i个记录。

通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录交换之。

 

步骤:

 

可以看出选择排序是一个不稳定算法。

 

算法代码:

//选择排序(稳定算法)
void SelectSort(int *array, int length)
{
        int i, j, k;
        int temp;
        for (i = 0; i < length - 1; ++i)
        {
               k = i;
               //逐一与后面的数进行比较,如果比它小就保存其下标
               for (j = i + 1; j < length; ++j)
               {
                       if (array[j] < array[k])
                       {
                              k = j;
                       }
               }
               //交换
               if (k != i)
               {
                       temp = array[i];
                       array[i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值