📜  递归气泡排序的C++程序

📅  最后修改于: 2021-04-24 19:05:58             🧑  作者: Mango

背景 :

冒泡排序是最简单的排序算法,它可以通过以错误顺序重复交换相邻元素来工作。
以下是迭代冒泡排序算法:

// Iterative Bubble Sort
bubbleSort(arr[], n)
{
  for (i = 0; i < n-1; i++)      

     // Last i elements are already in place   
     for (j = 0; j < n-i-1; j++) 
       if (arr[j] > arr[j+1])
         swap(arr[j], arr[j+1]);
} 

递归的想法。

  1. 基本情况:如果数组大小为1,则返回。
  2. 进行一次普通气泡排序一遍。此遍可修复当前子数组的最后一个元素。
  3. 对于除当前子数组的最后一个元素以外的所有元素重复执行。
C/C++
// C/C++ program for recursive implementation
// of Bubble sort
#include 
using namespace std;
  
// A function to implement bubble sort
void bubbleSort(int arr[], int n)
{
    // Base case
    if (n == 1)
        return;
  
    // One pass of bubble sort. After
    // this pass, the largest element
    // is moved (or bubbled) to end.
    for (int i=0; i arr[i+1])
            swap(arr[i], arr[i+1]);
  
    // Largest element is fixed,
    // recur for remaining array
    bubbleSort(arr, n-1);
}
  
/* Function to print an array */
void printArray(int arr[], int n)
{
    for (int i=0; i < n; i++)
        printf("%d ", arr[i]);
    printf("\n");
}
  
// Driver program to test above functions
int main()
{
    int arr[] = {64, 34, 25, 12, 22, 11, 90};
    int n = sizeof(arr)/sizeof(arr[0]);
    bubbleSort(arr, n);
    printf("Sorted array : \n");
    printArray(arr, n);
    return 0;
}
Please refer complete article on Recursive Bubble Sort for more details!Want to learn from the best curated videos and practice problems, check out the C++ Foundation Course for Basic to Advanced C++ and C++ STL Course for the language and STL.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.