几种常见排序的代码和时间比较

void    my_sort(int n)      //冒泡    耗时15499ms
{
    for(int i = 0;i < n;i ++)
        for(int j = 0;j < n - i - 1;j ++)
            if(s[j] > s[j + 1])
                swap(s[j],s[j + 1]);
}

void    my_sort(int n)      //选择    耗时3580ms
{
    for(int i = 0;i < n;i ++)
    {
        int min_index = i;
        for(int j = i;j < n;j ++)
            if(s[j] < s[min_index])
                min_index = j;
        swap(s[min_index],s[i]);
    }
}

void    my_sort(int n)      //插入    耗时2809ms
{
    int i,j;
    for(i = 1;i < n;i ++)
    {
        int temp = s[i];
        for(j = i - 1;j >= 0 && s[j] > temp;j --)
            s[j + 1] = s[j];
        s[j + 1] = temp;
    }
}

void    my_sort(int left,int right)     //归并    耗时171ms
{
    if(left >= right)
        return  ;

    int length = right - left;
    int mid = left + (length >> 1);
    int start_1 = left,end_1 = mid;
    int start_2 = mid + 1,end_2 = right;

    my_sort(start_1,end_1);
    my_sort(start_2,end_2);

    int k = left;
    while(start_1 <= end_1 && start_2 <= end_2)
        TEMP[k ++] = s[start_1] < s[start_2] ? s[start_1 ++] : s[start_2 ++];
    while(start_1 <= end_1)
        TEMP[k ++] = s[start_1 ++];
    while(start_2 <= end_2)
        TEMP[k ++] = s[start_2 ++];

    for(k = left;k <= right;k ++)
        s[k] = TEMP[k];
}

void    my_sort(int left,int right)     //快排    耗时168ms
{
    if(left >= right)
        return  ;

    int key = s[right];
    int small_index = left;
    for(int i = left;i <= right;i ++)
        if(s[i] < key)
        {
            swap(s[small_index],s[i]);
            small_index ++;
        }
    if(s[small_index] > key)
        swap(s[right],s[small_index]);

    my_sort(left,small_index - 1);
    my_sort(small_index + 1,right);
}





转载于:https://www.cnblogs.com/xz816111/p/5348097.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值