选择排序和快速排序性能比较

这里为了不修改我之前的文章,重新贴一下之前的代码

#if 01//selectSort && quickSort comparison#include <sys/time.h>#include <time.h>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <sys/types.h>#include <unistd.h>void swap(int *a, int *b){int temp = *a;*a = *b;*b = temp;}int partition(int a[], int idxLeft, int idxRight, int idxPivot){int i, idxCur = idxLeft;int pivot = a[idxPivot];swap(&a[idxPivot], &a[idxRight]);for(i = idxLeft; i < idxRight; i++){if(a[i] <= pivot){swap(&a[i], &a[idxCur]);idxCur++;}}swap(&a[idxCur], &a[idxRight]);return idxCur;}void quicksort(int a[], int idxLeft, int idxRight){if(idxLeft >= idxRight){return;}int idxPivot;idxPivot = partition(a, idxLeft, idxRight, (idxRight + idxLeft)/2);quicksort(a, idxLeft, idxPivot – 1);quicksort(a, idxPivot + 1, idxRight);}void selectSort(int a[], int size){int i, j, aux;//auxiliaryfor(i = 0; i< size – 1; i++){aux = i;for(j = i + 1; j < size; j++){if(a[aux] > a[j]){aux = j;}}if(i != aux){swap(&a[i], &a[aux]);}}}#define DEBUG_SORTxint main(int argc, char **argv){if(argc != 2){printf("\tusage : ./test SIZE\n");return -1;}//the larger the SIZE, the better of the quick sortint SIZE = atoi(argv[1]);int a[SIZE], i, b[SIZE];struct timeval tv1, tv2, tv3;srand(time(NULL)^getpid());for(i = 0; i < SIZE; i++){a[i] = rand() % 1000;}a[0] = 73, a[1] = 97, a[2]= 26;memcpy(b, a, sizeof(a));int size = sizeof(a)/sizeof(int);gettimeofday(&tv1, NULL);//(2)selectSort(a, size);gettimeofday(&tv2, NULL);printf("s : %.3lf ms\n", (tv2.tv_usec – tv1.tv_usec) * 1.0 / 1000 + (tv2.tv_sec – tv1.tv_sec) * 1000);quicksort(b, 0, size – 1);gettimeofday(&tv3, NULL);printf("q : %.3lf ms\n", (tv3.tv_usec – tv2.tv_usec) * 1.0 / 1000 + (tv3.tv_sec – tv2.tv_sec) * 1000);#ifdef DEBUG_SORTfor(i = 0; i< size; i++){printf("%d\t", a[i]);}printf("\n");for(i = 0; i< size; i++){printf("%d\t", b[i]);}printf("\n");#endifreturn 0;}#endif

,如同磁铁吸引四周的铁粉,热情也能吸引周围的人,改变周围的情况。

选择排序和快速排序性能比较

相关文章:

你感兴趣的文章:

标签云: