3.改进冒泡法,使之在新一轮比较中,若没有发生元素交换,则认为已排序完毕。c++
时间: 2024-03-25 19:36:50 浏览: 45
在键盘输入数组长度和元素个数,实现冒泡排序.TXT
以下是改进后的冒泡排序算法的C++代码:
```c++
void bubbleSort(int arr[], int n) {
bool swapped = true;
for (int i = 0; i < n-1 && swapped; i++) {
swapped = false;
for (int j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
swap(arr[j], arr[j+1]);
swapped = true;
}
}
}
}
```
在这个改进版本的冒泡排序算法中,我们引入了一个布尔型的变量swapped,来记录在一轮比较中是否发生了元素交换。在每一轮比较前,我们都将swapped设置为false,如果在比较过程中发生了元素交换,则将swapped设置为true。如果在一轮比较中没有发生任何元素交换,则说明数组已经有序,排序过程结束。
该算法的时间复杂度与普通冒泡排序一样,最坏情况下为O(n^2),最好情况下为O(n),平均情况下为O(n^2)。但是,在实际应用中,由于该算法可以在数组已经有序的情况下提前结束排序过程,因此效率要比普通冒泡排序高。
阅读全文