[英]Simple array sorting program showing incorrect output
當我運行給定的程序時,我得到的輸出為:
-2 -2 -2 -2
代碼如下:
#include<iostream>
using namespace std;
int main(){
int a;
int arr[4]={7,-1,0,-2};
for(int i=0;i<4;i++){
a=i;
for(int j=i+1;j<4;j++){
if(arr[j]<arr[a])
a=j;
}
arr[i] = arr[a];
}
for(int z=0;z<4;z++)
cout<<arr[z]<<"\t";
return 0;
}
我在哪里犯了錯誤?
目前您正在覆蓋元素。 你可以用 std::swap 交換元素:
#include <iostream>
using std::cout;
int main(){
int a;
int arr[4] = {7, -1 , 0, -2};
for(int i = 0; i < 4; ++i){
a = i;
for(int j = i + 1; j < 4; ++j){
if(arr[j] < arr[a])
a = j;
}
std::swap(arr[i], arr[a]);
}
for(const auto &el: arr)
cout << el << '\t';
return 0;
}
嗨,感謝所有幫助,更正后的代碼是:
#include<iostream>
using namespace std;
int main(){
int a;
int arr[6] = {12,-3,45,-2,-2,65};
for(int i=0;i<6;i++){
a=i;
for(int j=i+1;j<6;j++){
if(arr[j]<arr[a])
a=j;
}
swap(arr[a],arr[i]);
}
for(int z=0;z<6;z++)
cout<<arr[z]<<"\t";
return 0;
}
或使用臨時變量進行交換:
#include<iostream>
using namespace std;
int main(){
int a,temp;
int arr[4] = {-6,-3,0,7};
for(int i=0;i<4;i++){
a=i;
for(int j=i+1;j<4;j++){
if(arr[j]<arr[a])
a=j;
}
temp = arr[i];
arr[i] = arr[a];
arr[a] = temp;
}
for(int z=0;z<4;z++)
cout<<arr[z]<<"\t";
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.