Posted at 2007.10.05,Fri
今回は、クイックソートです。
よく利用しますが、あまり組むことは少ないですよね。
ソートを試してみる
よく利用しますが、あまり組むことは少ないですよね。
001: var count = 10;
002: var nums = new Array(count);
003:
004: // 適当な数値で初期化 ( 重複OK )
005: if (var c = 0; c < count; c++) {
006: nums[c] = Math.floor((Math.random() * 100) % 100);
007: }
008: qsort(0, count - 1);
009:
010: function qsort(r1, r2)
011: {
012: // 終了条件:ソート対象の要素が1つ
013: if (r1 >= r2) return;
014:
015: // 軸を適当に選ぶ(ここでは先頭)
016: var pivot = nums[r1];
017: var pos = r1;
018:
019: for (var c = r1 + 1; c <= r2; c++) {
020: // 軸を基準に分割しながら、軸が有るべき位置を見つける
021: if (nums[c] < pivot) {
022: pos++;
023: var x = nums[c];
024: nums[c] = nums[pos];
025: nums[pos] = x;
026: }
027: }
028:
029: var x = nums[r1];
030: nums[r1] = nums[pos];
031: nums[pos] = x;
032:
033: qsort(r1, pos - 1);
034: qsort(pos + 1, r2);
035: }
0
1
2
3
4
5
ソートを試してみる
PR
Comments
Post a Comment