bubble_sort.c算法
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <time.h> 4 #include <string.h> 5 #include <sys/time.h> 6 7 #include "common.h" 8 9 struct ArrayData 10 { 11 int iLen; 12 int Array[0]; 13 }; 14 15 void swap(int *a, int *b) 16 { 17 int iTmp; 18 iTmp = *a; 19 *a = *b; 20 *b = iTmp; 21 } 22 23 void bubble_sort(int *iArray, int len) 24 { 25 for(int index = 0; index < len - 1; index++) 26 { 27 for(int j = 0; j < len-1-index; j++) 28 { 29 if(iArray[j] > iArray[j+1]) 30 { 31 swap(&iArray[j], &iArray[j+1]); 32 } 33 } 34 } 35 } 36 37 int main(int argc, char **argv) 38 { 39 //int iArray[10000] = {0}; 40 int size = atoi(argv[1]); 41 struct ArrayData *iArrayData = NULL; 42 struct timeval stTimeStart; 43 iArrayData = malloc(sizeof(struct ArrayData) + size * sizeof(int)); 44 iArrayData->iLen = size; 45 int *iArray = iArrayData->Array; 46 unsigned long ulTimeUse = 0; 47 48 memset(&stTimeStart, 0, sizeof(stTimeStart)); 49 50 /* 初始化隨機數發生器 */ 51 srand((unsigned)time(NULL)); 52 53 for(int i = 0; i < size; i++) 54 { 55 iArray[i] = rand() % 200 - 100; 56 } 57 58 //printf("冒泡排序前:\r\n"); 59 //for(int i = 0; i < size; i++) 60 //{ 61 //printf("%d ", iArray[i]); 62 //} 63 64 COMMON_StartRecordTime(&stTimeStart); 65 bubble_sort(iArray, size); 66 ulTimeUse = COMMON_EndRecordTime(&stTimeStart); 67 68 printf("排序%d個數據,耗時%ld usec.\r\n", size, ulTimeUse); 69 //printf("\r\n冒泡排序後:\r\n"); 70 //for(int i = 0; i < size; i++) 71 // { 72 // printf("%d ", iArray[i]); 73 //} 74 //printf("\r\n"); 75 76 return 1; 77 }
common.cspa
1 #include <stdio.h> 2 #include <sys/time.h> 3 4 void COMMON_StartRecordTime(struct timeval *pstTimeStart) 5 { 6 gettimeofday(pstTimeStart, NULL); 7 } 8 9 unsigned long COMMON_EndRecordTime(struct timeval *pstTimeStart) 10 { 11 struct timeval stTimeEnd; 12 gettimeofday(&stTimeEnd, NULL); 13 return 1000000 * (stTimeEnd.tv_sec - pstTimeStart->tv_sec) + (stTimeEnd.tv_usec - pstTimeStart->tv_usec); 14 }
comman.h3d
1 extern void COMMON_StartRecordTime(struct timeval *pstTimeStart); 2 extern unsigned long COMMON_EndRecordTime(struct timeval *pstTimeStart);