Javaは線形時間の選択アルゴリズムを期待する
配列中の最大値を選択するアルゴリズムの時間的複雑度はO(n−1)である.
配列中の最小値を選択するアルゴリズムの時間複雑度はO(n−1)である.
しかし、最大値と最小値を同時に選択する時間的複雑度はO(3 n/2)である.
配列中にi番目の小さい得数アルゴリズムを選択する所望の時間は線形である
アルゴリズムは高速ソートの核心思想を採用する
Javaソートの高速ソート記事;
http://blog.csdn.net/alvintech14/article/details/38403753
配列中の最小値を選択するアルゴリズムの時間複雑度はO(n−1)である.
しかし、最大値と最小値を同時に選択する時間的複雑度はO(3 n/2)である.
配列中にi番目の小さい得数アルゴリズムを選択する所望の時間は線形である
アルゴリズムは高速ソートの核心思想を採用する
public int select(int[] array, int sta, int end,int index){// index index
if(sta == end)
return array[sta];
int q = partition(array,sta,end) ;
int k = q - sta + 1;
if(k == index)
return array[q];
else if(index < k)
return select(array, sta, q-1, index);
else
return select(array, q+1, end, index - k);
}
partition関数、参照 Javaソートの高速ソート記事;
http://blog.csdn.net/alvintech14/article/details/38403753