簡體   English   中英

使用 C++ 中的函數對數組進行排序

[英]sorting arrays with functions in C++

這是相對基本的,但我正在嘗試編寫一個在 C++ 中對數組進行排序的函數,我不想以常規方式進行。 我做了一個循環來查找數組中的最大數,將其存儲為“max”,將最大值保存為另一個數組中的當前值,然后將該值更改為零,以便在下一次循環運行時,前一個最大值數字將不再是最大值,讓下一個最大值取代它的位置,但由於某種原因,這不起作用。 我做錯了什么?

#include <iostream>
using namespace std;

void mysort(int arr[10]){
    int max = 0;
    int high[10];
    int count;




    for (int j=0; j<10; ++j){

            for(int i=0; i<10; ++i){
            if (arr[i]> max){
            max= arr[i];

            count=i;

        }

        }
    cout<<"the "<< count+1<<" largest is: "<< max<<"\n";    
    high[j]= max;
    *arr[count]= 0;

    }
}
main(){

    int pass[10] = {1,2,3,4,5,6,7,8,9,0};
    mysort(pass);

}

你的最大值永遠不會被重置,所以在第一次迭代時它被設置為 9 並在執行的其余部分保持不變

#include <iostream>
using namespace std;

void mysort(int arr[10]){
//    int max = 0; **this was the problem**
int high[10];
int count;




for (int j=0; j<10; ++j){
    int max = 0;
    for(int i=0; i<10; ++i)
    {
            if (arr[i]> max)
            {
                    max= arr[i];
                    count=i;

            }

    }
    cout<<"the "<< count+1<<" largest is: "<< max<<"\n";
    high[j]= max;
    arr[count]= 0;

    }
}

int main(){**you should also add return type to int main**

    int pass[10] = {1,2,3,4,5,6,7,8,9,0};
    mysort(pass);

}

您的內循環在其最終迭代中始終將 max 設置為 9,並且您的外循環僅在內循環完成后才讀取 max,因此 high[j] 將始終為 9。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM