[多图预警详细演示一步一步写算法导论] 冒泡排序
2014-10-13 22:47
183 查看
1.算法导论上的伪码 <img src="http://img.blog.csdn.net/20141013232518359?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUm9ja19weXRob24=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /> 2.c++版本代码 // BubbleSort.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <vector> #include <iostream> using namespace std; void BubbleSort(vector<int>&A){ bool ordered = false; for (size_t i = 0;!ordered && i < A.size(); i++) { for (size_t j = A.size() - 1; j > i; j--) { ordered = true; if (A[j]<A[j-1]) { int tmp = A[j]; A[j] = A[j - 1]; A[j - 1] = tmp; ordered = false; } } } } void show(vector<int>&A){ for (vector<int>::iterator i = A.begin(); i < A.end(); i++) { cout << *i << " "; } cout << endl; } int _tmain(int argc, _TCHAR* argv[]) { vector<int>A = {2,3,8,1,6}; show(A); BubbleSort(A); show(A); return 0; }
3.算法执行跟踪。
每一轮结束地方在将ordered变量赋值为false这条语句执行之前。
1.初始化vector
2.第一轮第一次比较之后
第一轮第二次比较
第一轮第三次比较
第一轮第四次比较
第二轮第一次比较
后面没有了,ordered没有被置为false,循环退出。排序结束
相关文章推荐
- [多图预警详细演示一步一步写算法导论]插入排序
- 算法导论之插入排序,选择排序,归并排序,冒泡排序,希尔排序,堆排序,快速排序的c语言实现
- 一步一步复习数据结构和算法基础-单链表冒泡排序
- [一步一步写算法导论]合并排序
- 【算法总结系列-2】有趣的排序-冒泡排序-C++演示
- 冒泡排序——一步一步算法篇
- 【算法导论-006】冒泡排序及其优化(BubbleSort)
- 【郝斌数据结构自学笔记】26_通过链表排序算法的演示再次详细讨论到底什么是算法以及到底什么是泛型【重点】
- 一头扎进算法导论-冒泡排序
- 郝斌数据结构 26 通过链表排序算法的演示 再次详细讨论到底什么是算法和泛型
- 一步一步复习数据结构和算法基础-冒泡排序
- 散列表的详细剖析 (算法导论第11章)
- 堆排序详细分析(算法导论第六章)
- 一步一步演示神经网络回馈算法过程
- 算法导论: 计划
- 算法导论示例-RedBlackTree
- 算法导论示例-MergeSort
- 计算机图形学算法演示程序(c#开源)
- 算法导论: 第八章 线性时间排序
- 操作系统内存分区分配算法演示