javaでのクイックソートの実装

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ムウ

javaでのクイックソートの実装

#1

投稿記事 by ムウ » 15年前

このサイトにアップされているクイックソートのアプリを見ながら実装を試みたのですがエラーが出てうまく実装できません・・・
なにか悪い点があればご指摘して頂けると幸いです

プログラムソース

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");
}
}

box

Re:javaでのクイックソートの実装

#2

投稿記事 by box » 15年前

> エラーが出てうまく実装できません・・・

何をしたときにどんなエラーが出るかを「具体的に」書いてください。
そうでないと、

> なにか悪い点があればご指摘して頂けると幸いです

このご要望にはお応えできません。
仮に、質問者さんが回答する立場であるとして、
単に「エラーが出た」という状況説明に対して
何か有効な回答ができるとお考えですか?

ところで、

> for(int i = 0; i <= 9; i++)

9までにとどまっている(配列全体を出力しようとしていない)
のは、何か理由があるのですか?

> System.out.println("x");

"x"という文字列を10回出力するのが、プログラムの仕様なのですか? 画像

Poco

Re:javaでのクイックソートの実装

#3

投稿記事 by Poco » 15年前

変数pの算出方法が参考元と異なります。
修正してみると、どう動きますか?

ムウ

Re:javaでのクイックソートの実装

#4

投稿記事 by ムウ » 15年前

>>boxさん
出力の仕方を間違えてました・・・
正しくは
for(int i = 0; i <= 11; i++)
System.out.println(x);
でした。
エラーについては後述してくださった変数pの算出方法を変えたらうまくいきました
スレ汚しすいません

>>ぽこさん
見落としてました・・・
わざわざありがとうございます! 画像

閉鎖

“C言語何でも質問掲示板” へ戻る