冒泡、插入排序的比较

xiaoxiao2021-02-27  326

提供一个数组,给数组排序并且获取数组中间值也就是 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; } } } }

结果:

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

转载请注明原文地址: https://www.6miu.com/read-3195.html

最新回复(0)