C++中的冒泡排序算法

Bubble Sorting Algorithm in C++

我正在尝试对整数数组实施冒泡排序算法,对数组进行排序的函数将数组作为参数并假设 return 排序后的数组。

代码如下:

#include <iostream>

using namespace std;
int* BubbleSort(int data[]){

for(int i=0; i<sizeof(data)/sizeof(data[0])-1; i++){
    for(int j=0; j<sizeof(data)/sizeof(data[0])-1-i; j++){
         if(data[j+1]>data[j]){
            int temp = data[j+1];
            data[j+1]=data[j];
            data[j]=temp;
        }
    }
}
return data;
}

int main()
{
    int data[]={8,4,9,7,6,5,13,11,10};
    int *a=BubbleSort(data);
    cout<<"{";
    for(int i=0; i<sizeof(data)/sizeof(data[0]); i++){
        cout<<a[i];
        if(i==sizeof(data)/sizeof(data[0])-1){
        cout<<"}"<<endl;
        }else{
        cout<<",";
        }
    }

   return 0;
}

我得到的输出: {8,4,9,7,6,5,13,​​11,10}

您必须传入数组的大小,因为数组 decays 指向指向其第一个元素(元素 0)的指针。

void BubbleSort(int data[], int size){

    for(int i(0); i != size; ++i){
         for(int j(i + 1); j != size; ++j){
             if(data[i] > data[j]){
                  int temp = data[i];
                  data[i] = data[j];
                  data[j] = temp;
          }
     }    
}