javaでのクイックソートの実装
Posted: 2010年4月20日(火) 22:06
このサイトにアップされているクイックソートのアプリを見ながら実装を試みたのですがエラーが出てうまく実装できません・・・
なにか悪い点があればご指摘して頂けると幸いです
プログラムソース
public class quicksort {
private static void c(int x[/url], int i, int j){
int t;
t = x; x = x[j]; x[j] = t;
}
private static void s(int x[/url], int l, int r){
int i, j, p;
i = l; j = r;
p = x[l + r / 2];
while(true){
while(x < p) //左から見てpより大きい物を探す
i++;
while(p < x[j]) //右から見てpより小さい物を探す
j--;
if(i >= j)
break;
c(x, i, j);
i++;
j--;
}
if(l < i -1)
s(x, l, i - 1);
if(j + 1 < r)
s(x, j + 1, r);
}
public static void main(String[/url] args) {
int x[/url] = {10,2,33,26,4,6,55,1,98,48,3,100};
s(x, 0, 11);
for(int i = 0; i <= 9; i++)
System.out.println("x");
}
}
なにか悪い点があればご指摘して頂けると幸いです
プログラムソース
public class quicksort {
private static void c(int x[/url], int i, int j){
int t;
t = x; x = x[j]; x[j] = t;
}
private static void s(int x[/url], int l, int r){
int i, j, p;
i = l; j = r;
p = x[l + r / 2];
while(true){
while(x < p) //左から見てpより大きい物を探す
i++;
while(p < x[j]) //右から見てpより小さい物を探す
j--;
if(i >= j)
break;
c(x, i, j);
i++;
j--;
}
if(l < i -1)
s(x, l, i - 1);
if(j + 1 < r)
s(x, j + 1, r);
}
public static void main(String[/url] args) {
int x[/url] = {10,2,33,26,4,6,55,1,98,48,3,100};
s(x, 0, 11);
for(int i = 0; i <= 9; i++)
System.out.println("x");
}
}