引言
冒泡排序作为排序中一个比较重要的方法,这里做一些简单的记录。
示例
本例中将一组数据2,4,3,8,5按照从小到大的顺序进行冒泡排序。首先说一下,冒泡排序是怎么排序的:将数组中相邻的两个元素进行比较,按照排序的要求(从小到大或者从大到小),不符合排序要求的相邻两个元素进行交换,第一趟相邻元素之间两两比较,直到倒数第二个元素与最后一个元素比较后,第一趟比较结束,然后从第一个元素开始相邻两个元素之间比较,直到倒数第二个元素与倒数第一个元素比较后,第二趟比较结束,以此类推,总共执行n-1趟。以上可以从左边开始也可以从右边开始相邻两元素的比较,但只能按照统一的方向开始,不能排序中混合使用开始方向。下面来看具体的实现代码,一下是在vs2010下创建的控制台程序,自动添加预编译头:
BubbleSort.cpp
// BubbleSort.cpp : 定义控制台应用程序的入口点。
///************************************************************************/
/* 功能:冒泡排序(2 4 3 8 5)按从小到大的顺寻排列功能函数:void swap(int &a,int &b) 实现两个整型变量之间交换值void bubbleSort(int *ptrr,int n) 实现冒泡排序void printArr(int *ptrr,int n) 实现输出数组元素*/
/************************************************************************/#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
using namespace std;void swap(int &a,int &b)
{int temp;temp = a;a = b;b = temp;
}void bubbleSort(int *ptrr,int n)
{for (int i = 0; i < n-1; ++i)//排n-1趟{for (int j = 0; j < n-1-i; ++j)//每一趟的排序{if (ptrr[j] > ptrr[j+1])//相邻两个元素之间进行比较,按从小到大的顺序{swap(ptrr[j],ptrr[j+1]);}}}
}void printArr(int *ptrr,int n)
{for(int i = 0; i < n; ++i){cout<<ptrr[i]<<"\t";}
}int _tmain(int argc, _TCHAR* argv[])
{int arr[] = {2,4,3,8,5};printArr(arr,5);cout<<endl;bubbleSort(arr,5);printArr(arr,5);cout<<endl;system("pause");return 0;
}
以上是实现代码。
项目的结构如下:
运行结果:
参考冒泡排序的动画图所在博文:
https://blog.csdn.net/liuzuoping/article/details/103375996