21xrx.com
2025-04-10 21:26:20 Thursday
文章检索 我的文章 写文章
C++实现起泡排序
2023-07-06 18:19:30 深夜i     24     0
C++ bubble sort implementation

起泡排序是一种简单的排序算法,其基本思想是通过比较相邻元素并不断交换来对待排序序列进行排序。这种排序方法的时间复杂度为O(n^2),因此在处理大规模数据时并不适用。不过对于小规模或者已经基本有序的数据而言,起泡排序的效率还是比较不错的。

C++是一种流行的编程语言,其支持丰富的算法库和各种排序算法的实现。下面我们就通过C++来实现一下起泡排序算法,并给出具体的实现方法。

实现步骤:

1. 首先定义一个数组或者容器存储待排序序列,假设数组为arr;

2. 利用双重循环进行排序,外层循环表示排序轮数,内层循环表示每轮排序过程中的比较和交换;

3. 在内层循环中,比较相邻的两个元素,如果前面的元素比后面的元素大,则交换这两个元素的位置;

4. 每一轮排序都会将当前待排序序列中最大的数移到序列最后,因此随着轮数的增加,已经排好序的元素会逐渐增加;

5. 当一轮排序中没有发生任何元素交换时,说明序列已经排好序,排序过程可以结束。

实现代码:

#include<iostream>
using namespace std;
void bubbleSort(int arr[], int n){
  for(int i = 0; i < n - 1; i++){
    bool sorted = true;
    for(int j = 0; j < n - i - 1; j++){
      if(arr[j] > arr[j+1]){
        swap(arr[j], arr[j+1]);
        sorted = false;
      }
    }
    if(sorted) break;
  }
}
int main(){
  int arr[] = 25;
  int n = sizeof(arr) / sizeof(arr[0]);
  bubbleSort(arr, n);
  cout<<"Sorted array: ";
  for(int i=0; i<n; i++){
    cout<<arr[i]<<" ";
  }
  return 0;
}

上述代码中,函数bubbleSort使用了一个布尔变量sorted来标记当前轮是否已经排好序,如果在一轮排序中没有发生任何交换,则说明序列已经排好序,可以直接跳出循环。

最后,输出排好序的数组即可。我们可以通过多次运行代码来验证起泡排序的正确性和可行性。

  
  

评论区