传统的冒泡排序的时间复杂度为o(n^2),但是我们可以通过改进时他的时间复杂度为o(n^2/2)第一次将最左边向右排序的时候我们把最大的数放在了最右边,第二次将第二大的数放在了右边第二位,同理第三次排序的时候我们不需要比较最又边的数。
#include<stdio.h>
#include<iostream>
using namespace std;
void main()
{
int x;
int n = 8;
int a[] = { 1,24,3,7,15,45,23,56 };
for (int i = 0; i<n-1 ; i++) //有8个数所以大循环 要8次
for (int j = 0; j < n-1 -i ; j++)// 当i=0 时 这个内循环 把最大的排到了最右边,此时后面的只需要排n-1次 依次类推
{
if (a[j] > a[j + 1])
{
x = a[j];
a[j] = a[j + 1];
a[j + 1] = x;
}
}
for (int i = 0; i < 8; i++)
{
cout << a[i] << " ";
}
system("pause");
}