簡體   English   中英

顯示錯誤輸出的簡單數組排序程序

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

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