クイックソートのプログラムです.
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) | |||