冒泡排序(bubble sort)是一种稳定的排序算法,不改变元素之间的相对位置。通过重复遍历数组,比较两个相邻元素之间的大小关系,每一次遍历找出一个最大值,将它持续交换移动到数组的最右端。也可以选择逆序遍历,将最小值交换到最左端。
void bubbleSort(vector<int>& nums)
{
bool flag=false;
for (int i = 1; i < nums.size()-1; i++)
{
for (int j = 0; j < nums.size() - i ; j++)
{
if (nums[j] > nums[(int)j + 1])
{
swap(nums[j], nums[(int)j + 1]);
flag = true;
}
}
if (!flag) break;
}
}
时间复杂度:
最坏情况下:O()。
最好情况下:O(n)。
平均情况:O()。
冒泡排序是一种稳定的排序算法。即相等的元素在排序后不会改变相对顺序。原因在于,当两个相邻的元素相等时,冒泡排序不会交换它们的位置,从而保持了相对顺序的稳定性。