2017-06-16 8 views
1

クイックソートアルゴリズムを使用してデータをソートしています。何らかの理由で、id(整数)でソートした後にname(文字列)でソートすると、最初から名前(文字列)でソートするよりも計算が高速になります。idでソートしてから名前でソートするのは名前でソートするより速いですか?

クイックソートアルゴリズムが正しいと仮定すると(良いピボットを見つけるためにランダム化またはヘルパーアルゴリズムを使用しない)、データとその順序は常に同じでコードにはバグは含まれていません。おそらくそれの理由でしょうか?

+2

'timeit'で収集されたタイミングデータをいくつか提供して、再現可能なコード? – DeepSpace

+1

"idと名前で並べ替える"とは、複雑な条件の1つの並べ替え、または2つの連続する並べ替えを行いますか?そして、あなたはデータがどのように見えるかのアイデアを提供できますか? –

+0

時差は約8秒です。私は2つの連続した種類を使用します。私はコードとデータの例を追加するために今質問を編集中です –

答えて

-3

それは非常に簡単な答えです。 quicksortを使用している場合、平均パフォーマンスはO(n Logn)です。だから、IDでソートすると、おそらくその時間スライスを使用しているでしょう。そしてあなたの上にO(n log n)分の計算量を名前に適用します。おそらく、2つの異なるデータセットで同じ計算を行っているでしょう。そのような一般的な数学 - 2つは1つ以上です。

文字列をソートするときには、整数でソートするよりも一般的に時間がかかることに注意してください。 (整数が非常に長いか、文字列が短く、ソートにASCII値を使用していない限り)

+1

私は反対側について話しています...どういうわけか2種類は1より速いです –

関連する問題