使用C++实现冒泡排序
来源:互联网 发布:apache jmeter 2.13 编辑:程序博客网 时间:2024/06/02 06:36
使用C++实现冒泡排序
基础版本的冒泡排序
int lastNotSwapped = arrSize-1;for (int pass = 1; pass <= arrSize-1; pass++){ for (int j = 0; j < lastNotSwapped; j++) { if (arr[j] > arr[j + 1]) { swap(arr[j], arr[j + 1]); } } lastNotSwapped -= 1;}
int lastNotSwapped = arrSize-1;
此句定义了最后一个未排序的元素为数组最后一个元素。
for (int pass = 1; pass <= arrSize-1; pass++)
外层循环,共进行arrSize-1轮排序。
for (int j = 0; j < lastNotSwapped; j++) { if (arr[j] > arr[j + 1]) { swap(arr[j], arr[j + 1]); } }lastNotSwapped -= 1;
内层循环,经过一轮排序,最后一个数变为已排序,其前一个数变为未排序。
加强版本的冒泡排序
int lastNotSwapped = arrSize-1; int tempLastNotSwapped = arrSize - 1; bool swapped = false; do { swapped = false; int temp(0); lastNotSwapped = tempLastNotSwapped; for (int j = 0; j < lastNotSwapped; j++) { if (arr[j] > arr[j + 1]) { swap(arr[j], arr[j + 1]); swapped = true; tempLastNotSwapped=j; } } } while (swapped);
int lastNotSwapped = arrSize-1; int tempLastNotSwapped = arrSize - 1; bool swapped = false;
默认未排序。
do { swapped = false; int temp(0); lastNotSwapped = tempLastNotSwapped; for (int j = 0; j < lastNotSwapped; j++) { if (arr[j] > arr[j + 1]) { swap(arr[j], arr[j + 1]); swapped = true; tempLastNotSwapped=j; } } } while (swapped);
- 内层循环不必解释,还仍是不断比较前后大小直到最后一个未排序元素。
- 值得一说的是temp的作用——在内循环时若进行交换,则将temp暂时定义为进行交换时的i,若之后还有交换则继续更改。一轮排序结束后temp的值就是最后一个未排序元素,此时再将其赋给lastNotSwapped。
- 若一轮排序未发生交换,则跳出外层循环,此时Swapped为假。
可视化的排序过程,详见https://visualgo.net/en/sorting
1 0
- 如何使用C语言实现冒泡排序
- 冒泡排序C实现
- C实现冒泡排序
- C语言实现冒泡排序
- 冒泡排序C语言实现
- 冒泡排序C语言实现
- 实现冒泡排序(c语言)
- C 实现冒泡排序
- 冒泡排序--C语言实现
- 冒泡排序--c语言实现
- 冒泡排序(C语言实现)
- 冒泡排序(C实现)
- 冒泡排序C语言实现
- c语言实现冒泡排序
- linux c 实现冒泡排序
- c语言实现冒泡排序
- C语言实现冒泡排序
- C语言实现冒泡排序
- 验证通知是同步还是异步执行....据代码验证,通知其实是一个同步执行的过程,按照通知中心发布通知,然后订阅通知,接收通知step by step
- Android Scroll分析(二)实现滑动的多种方法
- IntelliJ IDEA高效率配置
- 二叉树系列(建树,前序,中序,后序,中序非递归,深度,叶子数,节点数)
- HDU
- 使用C++实现冒泡排序
- 记一次失败的抓包实验(burp\fiddler4+proxifier抓应用程序的网络报文)
- F(1891): Full Tank?
- eclipse安装 spring tool suite(sts)插件
- LeetCode:Subsets
- Android面试攻略
- java学习笔记--字符串
- java彩票系统
- java 编程思想 末端哨兵实现内部链式存储机制