数据结构 笔记:选择排序和插入排序

选择排序的基本思想

-每次(例如底 i 次,i = 0 ,1,...,n-2)从后面n-i个待排的数据元素中选出关键字最小的元素,作为有序元素序列底 i 个元素.

template <typename T>
    static void Select(T array[] , int len,bool min2max = true)
    {
        for(int i=0;i < len;i++)
        {

            int min = i;

            for(int j = i+1; j < len ; j++)
            {
                if( min2max? (array[min] > array[j]) : (array[min] < array[j]))
                {
                    min = j;
                }
            }

            if(min != i)
            {
                Swap(array[i],array[min]);
            }
        }
    }

插入排序

template <typename T>
    static void Insert(T array[] , int len,bool min2max = true)
    {
        for(int i = 1;i < len;i++)
        {
            int k = i;
            T e = array[i];

            for(int j = i- 1;(j>=0) && (min2max ?(array[j] > e) :(array[j] < e));j--)
            {
                array[j+1] = array[j];
                k = j;

            }

            if(k != i)
            {
                array[k] = e;
            }
        }
    }

总结:

-选择排序每次选择为拍元素中最下元素

-插入排序每次讲第i个元素插入前面i - 1个已排元素中

-选择排序是不稳定的排序法,插入排序是稳定的排序方法

-选择排序和插入排序的事件复杂度为O(n^2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值