structsという配列がありstruct Test testArray[25]ます。
には、というTest structメンバーが含まれていint sizeます。
Test structsmember に基づいて、元の 5 つの最大のものを除くすべてを含む別の配列を取得する最速の方法は何sizeですか? 元の配列を変更せずに。
注: 配列内の項目の量は、はるかに大きくなる可能性があります。これをテストに使用しただけで、値が動的になる可能性があります。テスト用に遅いサブセットが欲しかっただけです。
オリジナルのコピーを作成してから、testArrayその配列をソートすることを考えていました。Test structs次に、 (asc または desc に応じて) 上位 5 または下位 5 を含まないの配列を返します。
また
最大の 5 を探して反復しtestArray、最大の 5 を除いて元の配列のコピーを作成します。この方法では、見つかった最大の 5 つの配列と比較して、配列を反復する回数が多すぎるようです。
フォローアップの質問:
これが私が今していることです。あなたの考えを教えてください。
関心のある最大の要素の数が同じままであることを考慮して、配列を反復処理し、最大の要素を取得して配列の前にスワップしています。次に、最初の要素をスキップして、その後で最大のものを探し、それを 2 番目のインデックスに交換します。最初の 5 つが最大になるまで。次に、並べ替えを停止し、6 番目のインデックスを最後まで新しい配列にコピーします。
このように、何があっても、配列を 5 回だけ反復します。そして、私はすべてをソートする必要はありません。