私はC++でちょっと錆びています。思ったことの1日後に、この問題を効率的に処理する方法はありません。 ranks[5]
配列lintsの非0値の昇順ランクが含まれていますC++はゼロ以外の値を昇順で並べ替えます。
は、私は5フロートの配列が、私は新しい配列を紹介したいと思います
lints[5]={0, 0.5, 3, 0, 0.6};
値があるとします。
この場合には答えは0の値この例では
ranks[1]=0;
ranks[2]=1;
ranks[3]=3;
ranks[4]=0;
ranks[5]=2;
を読んでいましたランク0を返しますが、私は正の値のみのランクを必要とするので、彼らは関係ありませんね。事前に
おかげ
編集:助けをみんなに おかげで、これは私はあなたが同じタスク:)
double lengths[5], ranks[5];
double temp;
int i,j;
lengths[0] = 2,lengths[1] = 0,lengths[2] = 1,lengths[3] = 0,lengths[4] = 4;
ranks[0] = 1, ranks[1] = 2, ranks[2] = 3, ranks[3] = 4, ranks[4] = 5;
for(i=0;i<4;i++){
for(j=0;j<4-i;j++){
if((lengths[j]>lengths[j+1] && lengths[j+1]) || lengths[j]==0){
// swap lenghts
temp=lengths[j];
lengths[j]=lengths[j+1];
lengths[j+1]=temp;
// swap ranks
temp=ranks[j];
ranks[j]=ranks[j+1];
ranks[j+1]=temp;
}
}
}
歓声を持っている場合には私のニーズに合ったものです。
あなたは数字と、アレイ内の元の位置を含む構造体のベクトルを並べ替えることができます。これをソートした後、元のインデックスを使って必要な配列を作成することができます – user463035818
'rank [5] = 2;'定義されていない振る舞いを持っています –
ranks [4] == 2が真であることを意味します – cokceken