开发环境:VS2015
冒泡排序”,该算法的核心思想是将无序表中的所有记录,通过两两比较关键字,得出升序序列或者降序序列。
在程序实现中要注意的是,第一个for循环,表示第几个要排序的元素,第二个for循环,表示当前元素要比较的次数
void BubbleSort(int *Array, int iSize)
{
for(int i = 0;i < iSize - 1;i++)
{
for(int j = 0;j < iSize -i -1;j++)
{
if(Array[j] < Array[j + 1])
{
int iTemp = Array[j];
Array[j] = Array[j + 1];
Array[j + 1] = iTemp;
}
}
}
}
关于复杂度的计算
第一次: n-1次比较
第二次:n-2次比较
...
第N-1次:n次比较,
第N次:0 次比较
所以比较次数为
(n-1)*n/2 = 1/2n^2
所以所以该算法的时间复杂度为O(n2)
。
下面是完整代码
#include<iostream>
#include <windows.h>
using namespace std;
void BubbleSort(int *Array, int iSize)
{
for (int i = 0; i < iSize - 1; i++)
{
for (int j = 0; j < iSize - i - 1; j++)
{
if (Array[j] > Array[j + 1])
{
int iTemp = Array[j];
Array[j] = Array[j + 1];
Array[j + 1] = iTemp;
}
}
}
}
void PrintArray(int *Array,int iSize)
{
for(int i = 0;i<iSize;i++)
{
cout << "Current Value is "<< Array[i]<< endl;
}
}
int main()
{
int Array[8] = { 49,38,65,97,76,13,27,49 };
BubbleSort(Array,8);
PrintArray(Array,8);
system("pause");
return 0;
}