我有一個任務,我一直堅持,並經過相當多的研究後無法弄清楚。嘗試使用在數組中找到最小值的函數按升序對數組進行排序?
我需要使用返回數組中最小值的函數對大小爲20的數組進行排序。
這是我的函數,返回數組中的最小值。
int problem5(int *arr, int size, int &m, int &n){//Definition Problem 5
int smallest = 101;
int smallestindex;
for (int i=0; i < size; ++i){
if (arr[i] < smallest){
smallest = arr[i];
smallestindex = i;
}
}
m=smallest;
n=smallestindex;
cout<<"Smallest value is "<<m<<endl;
cout<<"It's index is "<<n<<endl;
return n;
}`
這裏是我的功能,我想切換與最小值的索引數組中的第一個值的索引,然後在陣列不包括在第一值(最小值)新陣列。這裏是代碼:
void problem8(int *x, int size){
int m = 101;
int n = 101;
int tmpsize = size;
problem4(x,20);
for(int i =0; i<size; i++){
swap(x[i],x[problem5(&x[i],tmpsize, m, n)]);
tmpsize = tmpsize - 1;
}
}`
對於前幾個循環,它不會更改數組,但會正確識別最小值。預先感謝您的幫助。
你應該嘗試使用[調試器](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。 – Fureeish
簡單。使用'std :: sort'對數組進行排序,然後第一個槽中的值將是最小的。 –
'problem4()'的定義是什麼? –