冒泡排序(bubbleSort)
来源:互联网 发布:caffe alexnet 编辑:程序博客网 时间:2024/05/01 01:37
冒泡排序(bubbleSort)
冒泡->改进->再改进。
原始的冒泡排序算法:
#include <stdio.h>void swap(int &x, int &y){int t = x;x = y;y = t;}int main(){int num[30] = { 5, 3, 2, 6, 7, 0, 1, 8, 9, 4,18, 17, 19, 12, 15, 13, 14, 16, 11, 10 };int lo = 0, hi = 20;int cnt = 0; // 记录比较次数for (int i = 0; i < hi; i++){for (int j = 1; j < hi-i-1; j++){cnt++;if (num[j - 1] > num[j]){swap(num[j - 1], num[j]);}}}printf("总共比较了:%d次\n", cnt); // 380次for (int i = 0; i < hi; i++)printf("%d ", num[i]);getchar();return 0;}
改进后的算法(加入提前结束标志sorted):
#include <stdio.h>void swap(int &x, int &y){int t = x;x = y;y = t;}// 改进算法int main(){int num[30] = { 5, 3, 2, 6, 7, 0, 1, 8, 9, 4,18, 17, 19, 12, 15, 13, 14, 16, 11, 10 };int lo = 0, hi = 20;int cnt = 0; // 记录比较次数for (int i = 0; i < hi; i++){int sorted = 1;for (int j = 1; j < hi-i-1; j++){cnt++;if (num[j - 1] > num[j]){swap(num[j - 1], num[j]);sorted = 0;}}if (sorted == 1) break; // 如果没有要交换的序列,则排序结束}printf("总共比较了:%d次\n", cnt); // 190次for (int i = 0; i < hi; i++)printf("%d ", num[i]);getchar();return 0;}
再改进算法:
#include <stdio.h>void swap(int &x, int &y){int t = x;x = y;y = t;}// 再改进算法int main(){int num[30] = { 5, 3, 2, 6, 7, 0, 1, 8, 9, 4,18, 17, 19, 12, 15, 13, 14, 16, 11, 10 };int lo = 0, hi = 20;int last = hi;int k;int cnt = 0;for (int i = 0; i < hi; i++){k = last;for (int j = 1; j < k; j++){cnt++;if (num[j - 1] > num[j]){swap(num[j - 1], num[j]);last = j;}}if (k == last) break;}printf("总共比较了:%d次\n", cnt); // 145次for (int i = 0; i < hi;i++)printf("%d ", num[i]);getchar();return 0;}
0 0
- 冒泡排序 冒泡排序:BubbleSort
- Java BubbleSort(冒泡排序)
- 冒泡排序[BubbleSort]
- 冒泡排序 BubbleSort
- BubbleSort(冒泡排序)
- 冒泡排序bubbleSort
- 冒泡排序 bubblesort
- 冒泡排序bubbleSort
- 冒泡排序(BubbleSort)
- bubbleSort (冒泡排序)
- bubbleSort - 冒泡法排序
- 冒泡排序(BubbleSort)
- 冒泡排序(BubbleSort)
- 冒泡排序(BubbleSort)
- 冒泡排序(BubbleSort)
- BubbleSort冒泡排序
- BubbleSort冒泡排序
- 冒泡排序(BubbleSort)
- 只设置视图的一个或几个角为圆角
- Xcode 下 svn 变更用户名/URL的方法
- 快速排序算法
- 第7章 鼠标
- iOS内购详细教程 从0到1
- 冒泡排序(bubbleSort)
- php 常见的内置函数及用法
- linux shell — 5.文件和目录管理(2)
- 怎么理解【前台PHP,中间件用Java,底层用C/C++】
- Android EventBus学习
- 黑马程序员——基础知识--包
- GraphXML.html backup
- MyEclipse使用JAX-WS 2.0生成WebService报错,无法生成WSDL文件
- 修改initrd.lz