1.算法导论上的伪码
<img src="https://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,循环退出。排序结束