インタビューの質問ごとに、「テストで全体的なスコアに基づいて10億人の学生のリストをどのように並べ替えるのですか? 1Bとマークの範囲は10-100です。 どのようなソートアルゴリズムも行いますが、効率的なアルゴリズムは何ですか?10億人の学生のリストを並べ替える
2
A
答えて
6
入力にはcounting sortを単に実行します。この場合は、範囲が制限されているため、O(n)
です。また、すべての生徒を出力する方法がΩ(n)であるため、最も効率的です。
利用可能なスコア(例えば、90の得点がある場合、生徒を90回ループする、スコア100の生徒を初めて出力する場合など)についてルーピングすることによって出力することができます。
このタスクはbucket sortで実行できます。しかし、まず入力をループして、各スコアに関連する生徒数を見つけ、その後、生徒数を考慮して各スコアのバケットを作成し、バケツを埋めて、バケットの配列を作成する必要があることに注意してください。現在のアイテム数を各バケットに保存する追加のパラメータ。
O(n)余分なスペースでO(n)、O(n)余分なスペースでO(n)ですが、2番目の方法は2*n
であるため、最初は90*n
です。
0
カウントソートを使用します。あなたが最大値とこの問題で満足されるいくつかの他のパラメータを知っているのは良いことです。
0
私はいくつかの種類の分割と征服アルゴリズム(マージソートやクイックソートやバケットソートなど)を使用し、このアイデアを使用して複数のバケット間でソートを分割します。 問題は、すべてのデータを結合して大きな配列に戻す必要がある場合に発生しますが、サブ配列が既にソートされているため、O(n)しかかかりません。
O(k)時間を取る2つのループとO(n)を取る1つのループがあり、合計時間はO(n + k)です。これは、kがnより小さい場合に有効です。例えば。スコアで1,000,000,000人をソートするとします。 n = 1000000000、k = 100-10、したがって時間= O(n)。
関連する問題
- 1. 並べ替えメソッドを持つ人物の並べ替え
- 2. リストのリストを並べ替える
- 3. 自分のコースの学生数でユーザーを並べ替える
- 4. Groovyのリストのリストを並べ替え
- 5. 並べ替えの生成
- 6. パンダ並べ替えリストstr.split()
- 7. 辞書学的に並べ替え
- 8. リストを並べ替えるSencha Touch
- 9. Pythonのリストの並べ替え
- 10. Clojureのリストの並べ替え
- 11. N個のリストの並べ替え
- 12. 並べ替えで並べ替え
- 13. 並べ替えの方法配列インデックスで並べ替えられたリスト
- 14. リストを並べ替えると「void」エラーが発生する
- 15. 並べ替えの要素リスト
- 16. キーワードで並べ替えるリスト
- 17. Python、リストするオブジェクトと並べ替え
- 18. Chromeで並べ替えられていないリストのリスト項目を並べ替える
- 19. Laravel 4.2並べ替えの関係による並べ替え
- 20. VBA - ドラッグ&ドロップによる並べ替えの並べ替え
- 21. 私のリストのリストを並べ替えるには?
- 22. Eclipseエクステンションポイントのエクステンションの並べ替え/並べ替え
- 23. Rのリストの並び順を並べ替える:1つのリストを並べ替える「他のリストに応じた値」の値
- 24. Riakでデータを並べ替え/並べ替える方法は?
- 25. ASPxPivotGridカスタム並べ替え/並べ替えを削除する
- 26. Pythonソート値リスト、値で並べ替え
- 27. UITableView並べ替えのような並べ替え
- 28. ヘルプJavaサーバー側でルールのリストを並べ替え、並べ替えるのに必要です
- 29. unique_ptrのベクトルを保持するオブジェクトのリストを並べ替え
- 30. プロジェクトを並べ替える
2次基準として名前でマークするか、マークのみでソートしますか? – Gaim