1.3 选择排序(简单排序、堆排序)

本文详细介绍了选择排序和堆排序两种基础算法。选择排序通过每次选择最小元素逐步构造有序序列,时间复杂度为O(n^2)。堆排序利用堆这种数据结构,通过建堆和调整堆来实现排序,其时间复杂度为O(nlogn),空间复杂度为O(1)。文章分别阐述了两种排序的定义、实现代码和性能分析。
摘要由CSDN通过智能技术生成

选择排序:基本思想是每一趟选择n-i+1(i=,2,3…n-1)个记录中选取关键字最小的记录作为有序序列中的第i个元素。(每一次从剩余需要排序的数中,选择一个最小的,放在已经排好蓄序列的后面)

简单选择排序

一、定义实现

第一趟:从n个元素中根据关键字选取最小的记录,然后与第一个元素交换;(第一个元素的角标是0)
第二趟:从剩余的n-1个元素中根据关键字选择最小的记录,然后与第二个素交换位置;



第i趟:从剩余的n-i+1记录中通过,选取关键字最小的记录, 和第i个记录交换位置;
注意:排序的是记录,我们一般排序数,所以这时候这个数就是记录,同时记录还可以代表字符串、结构体等等;因此关键字的选择也就不一样,比如有数、字符等等。

二、实现代码

int SelectMinKey(int a[],int i,int n) // 数组a中从角标i开始查找,到角标为n的时候结束,注意不包含角标n
{
    int key=i;
    for(i++;i<n;i++)
    {
        if(a[key]>a[i])
            key=i;
    }
    return key;
}
void Select(int a[], int n,int i) // 从角标为i的节点开始调整的
{
     i=0;
    for( ; i<n-1; i++) //最后一个数是不需要再选择排序了
    {
        int sm=SelectMi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值