クイックソートのプログラムです.
class SortQ{ static int n=10; static int a[ ]=new int[n]; public static void main(String argv[ ]){ Alib.prepare(a); // 値を乱数で準備 Alib.show(a); Alib.ln(); sortq(0, a.length-1); // 整列 Alib.show(a); Alib.ln(); } static void sortq(int top, int tail){ if(top < tail){ int i=top, j=tail, x=a[i]; // x(先頭値)を分割のキーとする while(i<=j){ while(a[i]< x) i=i+1; while(a[j]> x) j=j-1; if(i <=j){ Alib.swap(a, i, j); // 違反している要素同志を交換 i=i+1; j=j-1; } } sortq(top, j); // 前の部分を整列 sortq(i, tail); // 後の部分を整列 } } }
26.1.6.30 交換分割整列 | 26.1.6.31 クイックソート | 26.1.6.32 クイックソートの動き | ||
2009年度版に向けて現在作業中です.
このページに関してお気づきの点がありましたら
コメント投稿システムまでお願いします.
|
Fri, 03 Sep 2004 00:07:14 JST (1793d) |