zhtxcs 2022-05-25 23:29 采纳率: 0%
浏览 15

大家能帮我看看这个冒泡为啥没有排序效果吗

冒泡排序

void BubbleSort(vector<int> arr,int length);

int main(int argc, char** argv) {
    
    int n;
    vector<int> arr;
    vector<int>::iterator i;

    cin >> n;
    arr.resize(n);
    for(i=arr.begin();i<arr.end();i++){
        cin >> *i;
    } 
    
    BubbleSort(arr,n);
    for(i=arr.begin();i<arr.end();i++){
        cout << *i << " ";
    }
    return 0;
}

void BubbleSort(vector<int> arr,int length)
{
    for(int i=0;i<length;i++){
        for(int j=0;j<length-i-1;j++){
            if(arr[j]>arr[j+1]){
                int temp;
                temp=arr[j+1];
                arr[j+1]=arr[j];
                arr[j]=temp;
            }
        }
    }
}


输入
5
23
34
1
2
3
输出23 34 1 2 3

  • 写回答

1条回答 默认 最新

  • 关注

    你函数定义有问题。应该使用传地址。不应该使用值传入。值传入只会复制一份值。最终你的数组不会改变。
    代码:

    #include <iostream>
    #include <stdio.h>
    #include <vector>
    #include <string.h>
    
    using namespace std;
    
    
    void BubbleSort(vector<int> &arr,int length);
    
    int main(int argc, char** argv) {
    
        int n;
        vector<int> arr;
        vector<int>::iterator i;
    
        cin >> n;
        arr.resize(n);
        for(i=arr.begin();i<arr.end();i++){
            cin >> *i;
        }
    
        BubbleSort(arr,n);
        for(i=arr.begin();i<arr.end();i++){
            cout << *i << " ";
        }
        return 0;
    }
    
    void BubbleSort(vector<int> &arr,int length)
    {
        for(int i=0;i<length-1;i++){
            for(int j=0;j<length-i-1;j++){
                if(arr[j]>arr[j+1]){
                    int temp;
                    temp=arr[j+1];
                    arr[j+1]=arr[j];
                    arr[j]=temp;
                }
            }
        }
    }
    

    img

    评论

报告相同问题?

问题事件

  • 创建了问题 5月25日