『プログラミングの宝箱 アルゴリズムとデータ構造 第2版』(SBクリエイティブ株式会社)の内容の
第1章、クイックソートのjava版サンプルの以下の処理内容がわかりません。
文法的にわからない箇所はないのですが、なぜこの処理で並べ替えができるのか?
どの箇所でどういう作業をしているのかがわかりません。
quickSort(int bottom, int top, int[] data)メソッドの処理内容について
具体的に何をやっているのか理解できる方がいれば、解説お願いいたします。
import java.util.Random;
class List1_3 {
// データの件数
private static final int N = 10;
private static int[] sort = new int[N];
private static void quickSort(int bottom, int top, int[] data) { int lower,upper; if (bottom >= top) return; // 先頭の値を「適当な値」とする int div = data[bottom]; for (lower = bottom, upper = top; lower < upper;) { while (lower <= upper && data[lower] <= div) lower++; while (lower <= upper && data[upper] > div) upper--; if (lower < upper) { int temp = data[lower]; data[lower] = data[upper]; data[upper] = temp; } } // 最初に選択した値を中央に移動する int temp = data[bottom]; data[bottom] = data[upper]; data[upper] = temp; quickSort(bottom, upper - 1, data); quickSort(upper + 1, top, data); } public static void main(String args[]) { Random random = new Random(); System.out.println("ソート準備"); for (int i = 0; i < N; ++i) { sort[i] = random.nextInt(1000); System.out.print(sort[i] + " "); } System.out.println("\nソート開始"); quickSort(0, N - 1, sort); System.out.println("ソート終了"); for (int i = 0; i < N; ++i) { System.out.print(sort[i] + " "); } }
}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/04 14:12