//冒泡排序,稳定,平均与最坏时间复杂度为O(n^2),最好为O(n),空间复杂度为O(1)
#include <iostream>
using namespace std;
void BubbleSort(int* numbers, const int length);
int main()
{
int numsArr[100] = { 0 };
int length = 0;
cin >> length;
for (int i = 0; i < length; ++i)
cin >> numsArr[i];
BubbleSort(numsArr, length);
for (int i = 0; i < length; ++i)
cout << numsArr[i] << " ";
cout << endl;
system("pause");
return 0;
}
//比较大的数排到后面去
void BubbleSort(int* numbers, const int length)//冒泡排序,需要参数为一维排序数组,和数组的要排序的数量
{
if (numbers == NULL || length <= 0)//条件判别,如果数组为空或者长度小于等于0,直接返回
{
cout << "Error: invalid parameters!" << endl;
return;
}
bool isExchanged = false;
for (int i = 0; i < length - 1; ++i)//i到length-2即可,最后一个不需要排序了
{
isExchanged = false;//用来标记在某次循环中是否有交换,如果没有交换,则已经是有序的了,不需要再循环了
for (int j = 0; j < length - 1 - i; ++j)//当i==0时,j<length-1
{
if (numbers[j] > numbers[j + 1])
{
swap(numbers[j], numbers[j + 1]);
isExchanged = true;
}
}
if (!isExchanged) return;//如果扫描一趟后没有交换,则已经是排好序的,后面的就不需要遍历了,直接返回
}
}
八大排序之冒泡排序
最新推荐文章于 2023-02-28 20:11:40 发布