冒泡、插入排序的比较

提供一个数组,给数组排序并且获取数组中间值也就是 k=N/2 ,奈何只会两种排序,所以只做了冒泡排序跟插入排序的排序比较


思路

首先弄两个比较大的数组,然后通过 time.h 中的 clock() 差获取执行排序的时间,最后获取中间值


实现

代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAXINT 10240

void s_sort(int *, int);
void i_sort(int *, int);

int main()
{
    int i,N,nu[MAXINT+1],nu2[MAXINT+1];
    clock_t start;
    srand (110) ;
    for(i=0;i<MAXINT+1;++i)
        nu2[i] = nu[i] = rand();
    N = MAXINT/2;

    start = clock();

    s_sort(nu, MAXINT+1);
    printf("----------------------------------\n");
    printf("| k: %-8d| time: %-12f|\n",nu[N], (double)(clock()-start));

    start = clock();

    i_sort(nu2, MAXINT+1);
    printf("----------------------------------\n");
    printf("| k: %-8d| time: %-12f|\n",nu2[N], (double)(clock()-start));
    printf("----------------------------------\n");

    return 0;
}

void i_sort(int num[], int len)
{
    int i,j,tmp;
    for(i=1;i<len;i++){
        tmp = num[i];
        for(j=i-1;j>=0;j--){
            if(num[j]<tmp)
                num[j+1] = num[j];
            else
                break;
        }
        num[j+1] = tmp;
    }
}

void s_sort(int num[], int len)
{
    int i,j;
    int tmp;
    for(i=0;i<len-1;i++){
        for(j=i;j<len;j++){
            if(num[i]<num[j]){
                tmp = num[i];
                num[i] = num[j];
                num[j] = tmp;
            }
        }
    }
}


结果:


插入比冒泡快了不是一点点啊。中断不必要的循环还是很节约资源的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值