C--经典算法之排序---优化过的冒泡排序
2014-04-10 15:24
267 查看
/* ** Description: 冒泡排序 ** Method: ** 54321 4321[5] 321[45] 21[345] 1[2345] */ #include <stdio.h> #include <time.h> #define swap(x, y){int tmp; tmp = x; x = y; y = tmp;} int main(unsigned char argc, unsigned int **argv) { int src[] = {10,9,8,7,6,5,4,3,2,1}; int value = 0; int i = 0, j = 0, k = 0; int cnt = 0; int tmp = 0; double start, finish; tmp = cnt = sizeof(src)/sizeof(int); start = (double)clock(); /* 传统的冒泡排序 */ /* for(j = 0; j < cnt-1; j++,tmp--) { for(i = 0; i < tmp-1; i++) { if(src[i+1] < src[i]) swap(src[i], src[i+1]); } } */ /* 优化的冒泡排序 */ for(j = 0; j < cnt/2; j++) { for(i = 0; i < tmp-1; i++) { if(src[i+1] < src[i]) swap(src[i], src[i+1]); } #if 0 for(i = 0; i < cnt; i++) printf("%d,", src[i]); printf("\n"); #endif for(k = tmp-j-1; k >= 0; k--) { if(src[k] < src[k-1]) swap(src[k], src[k-1]); } } for(i = 0; i < cnt; i++) printf("%d,", src[i]); printf("\n---------------------------------------\n"); finish = (double)clock(); printf("the running time is %f \n", finish-start); return 0; }
相关文章推荐
- C--经典算法之排序---冒泡排序
- Sql语句排序的算法 是不是应用经典算法冒泡法实现的?
- 排序算法(三)冒泡、选择排序的Python实现及算法优化详解 推荐
- 经典算法系列四----冒泡与选择排序
- 排序算法之希尔(优化冒泡)排序
- 经典算法之三:插入排序及二分优化
- 史上最简单!冒泡、选择排序的Python实现及算法优化详解
- 经典算法之直接插入排序及其优化
- 白话经典算法系列之五 归并排序的实现
- 经典白话算法之桶排序
- 经典算法整理之归并排序
- 【经典算法】第三回:插入排序
- 算法之排序(选择、冒泡、插入)
- C#编程之经典算法——排序(十二)
- 经典算法 之 快速排序 QuickSort
- 四种经典排序 冒泡,快排,插入,选择 C++实现
- 算法系列15天速成——第二天 七大经典排序【中】
- 经典算法之七大排序总结篇
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 白话经典算法系列之二 直接插入排序的三种实现(转)