[英]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.