3

ビーズソートと呼ばれるアルゴリズムを理解する必要があります。アルゴリズムの C++ 実装を見つけましたが、完全には理解していません。私を最も混乱させるのは、次の行で何が起こるかです。

    List[i]++;

お願い助けて

完全なコードは次のとおりです。

#include <iostream>
#include <vector>

using std::cout;
using std::vector;

void distribute(int dist, vector<int> &List) {
    //*beads* go down into different buckets using gravity (addition).
    if (dist > List.size() )
        List.resize(dist); //resize if too big for current vector

    for (int i=0; i < dist; i++)
        List[i]++;
}

vector<int> beadSort(int *myints, int n) {
    vector<int> list, list2, fifth (myints, myints + n);

    cout << "#1 Beads falling down: ";
    for (int i=0; i < fifth.size(); i++)
        distribute (fifth[i], list);
    cout << '\n';

    cout << "\nBeads on their sides: ";
    for (int i=0; i < list.size(); i++)
        cout << " " << list[i];
    cout << '\n';

    //second part

    cout << "#2 Beads right side up: ";
    for (int i=0; i < list.size(); i++)
        distribute (list[i], list2);
    cout << '\n';

    return list2;
}

int main() {
    int myints[] = {734,3,1,24,324,324,32,432,42,3,4,1,1};
    vector<int> sorted = beadSort(myints, sizeof(myints)/sizeof(int));
    cout << "Sorted list/array: ";
    for(unsigned int i=0; i<sorted.size(); i++)
        cout << sorted[i] << ' ';
}
4

3 に答える 3

3

リストのi 番目の要素の値を1 増やします。

于 2012-12-04T09:55:08.613 に答える
1

インデックスでvector<int>関数(と呼ばれる)の引数の要素にアクセスし、その値を1ずつ増やしますListi

于 2012-12-04T09:54:35.283 に答える
0

Cの++演算子は、変数をインクリメントします。クイックリファレンスについては、こちらを参照してください:http: //en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Arithmetic_operators

この場合、変数は、iという名前の配列の位置にある配列要素でListあり、Cでは。として表され List[i]ます。

于 2012-12-04T14:48:33.710 に答える