1. ホーム
  2. c++

[解決済み] C++選択ソート(ベクター)

2022-02-17 14:10:57

質問

int temp;
for (int j = 0; j < vecsize - 1; ++j) {

    int min = sort.at(j);
    for (int i = j+1; i < vecsize; ++i) {
        if (min > sort.at(i)) {
            min = sort.at(i);  
            temp = i;
        }

    }  
swap(sort.at(j), sort.at(temp));
}

のベクトルを(昇順に)ソートしようとしています。 23 42 4 16 8 15

しかし、選択ソートを使おうとすると、出力が出ます。4 8 15 23 16 42

何が間違っているのでしょうか?

どうすればいいですか?

これを試してみてください。 修正コード

#include <iostream>
#include <vector>
using namespace std;

void print (vector<int> & vec) {
    for (int i =0 ; i < vec.size(); ++i) {
        cout << vec[i] << " ";
    }
    cout << endl;
}

int main() {
int temp;
vector<int> sort;

sort.push_back(23);
sort.push_back(42);
sort.push_back( 4);
sort.push_back( 16);
sort.push_back( 8);
sort.push_back(15);
print(sort);

int vecsize = sort.size();
for (int j = 0; j < vecsize - 1; ++j) {

    int min = j;
    for (int i = j+1; i < vecsize; ++i) {
        if (sort.at(min) > sort.at(i)) {
            min = i;
        }

    }  
    if (min != j)
        swap(sort.at(j), sort.at(min));
}

print(sort);
return 0;
}