几种简单的排序算法

1.冒泡排序

思路:对一个数组里相邻的两个数比较,按照一定的规则(前者大于后者就交换),排序完成以后得到的数组就是按照下标一次变大;

C++实现:

template<class _Ttype>
void OnBubleSort(_Ttype *typeArray, int arrayLength)
{
    if (arrayLength==0||array==NULL)
        return;
    bool bFlag = false;
    for (int i = 0; i < arrayLength; i++)
    {
        bFlag = false;
        for (int j = 0; j < arrayLength-i-1; j++)
        {
            if (typeArray[j]>typeArray[j+1])
            {
                bFlag = true;
                _Ttype temp = typeArray[j];
                typeArray[j] = typeArray[j+1];
                typeArray[j+1] = temp;
            }
        }
        if (!bFlag)
            break;
    }
    return;
}
 


2.选择排序

思路:在一个待排数组中选择最大(小)的元素位置与依次与0、1、2、3位置交换下去;

C++代码实现:

template<class _TYPE_template>
void    OnSelectSort(_TYPE_template * array, int arrayLength)
{
    if (arrayLength==0||array==NULL)
        return;
    for (int i = 0; i < arrayLength; i++)
    {
        // 找出index到arrayLength-1为止的位置;
        int k = i;
        for (int j = i; j < arrayLength; j++)
        {
            if (array[k]>array[j])
                    k = j;
        }

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

3.直接插入排序

思路:取待排数组中的元素插入到已经排序好的地方。

template<class class_type>
void OnInSertSort(class_type * array, int arrayLength)
{
    if (arrayLength==0||array==NULL)
        return;
    int j ;
    for (int i = 1; i < arrayLength; i++)
    {
        for (j = i-1;j>=0;j--)
        {
            if (array[i]>array[j])
                break;
        }
        class_type temp = array[i];
        for (int k = i-1;k>j;k--)
            array[k+1]=array[k];
        array[j+1]=temp;
    }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值