您的位置:首页 > 其它

[多图预警详细演示一步一步写算法导论] 冒泡排序

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,循环退出。排序结束
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: