質問編集履歴
4
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -41,39 +41,45 @@
|
|
41
41
|
console.log(a);
|
42
42
|
```
|
43
43
|
|
44
|
+
追々記
|
45
|
+
再帰のところで止まってしまうようです。。。
|
44
|
-
|
46
|
+
間違っているところを指摘いただければ幸いです。
|
45
47
|
```javascript
|
48
|
+
function startQuickSort(a, startID, endID){
|
46
|
-
function quickSort(
|
49
|
+
function quickSort(startID, endID){
|
47
|
-
var newArray = [];
|
48
|
-
var newArray = a;
|
49
|
-
|
50
|
+
var pivot = a[Math.floor((startID + endID)/2)];
|
50
|
-
|
51
|
+
var left = startID;
|
51
|
-
|
52
|
+
var right = endID;
|
52
53
|
|
53
|
-
while(true){
|
54
|
+
while(true){
|
54
|
-
|
55
|
+
while(a[left]<pivot){
|
55
|
-
left++;
|
56
|
+
left++;
|
57
|
+
}
|
58
|
+
while(pivot<a[right]){
|
59
|
+
right--;
|
60
|
+
}
|
61
|
+
if(right <= left){
|
62
|
+
break;
|
63
|
+
}
|
64
|
+
var tmp =a[left];
|
65
|
+
a[left] =a[right];
|
66
|
+
a[right] =tmp;
|
67
|
+
left++;
|
68
|
+
right--;
|
69
|
+
}
|
70
|
+
if(startID < left-1){
|
71
|
+
quickSort(startID,left-1);
|
72
|
+
}
|
73
|
+
if(right+1 < endID){
|
74
|
+
quickSort(right+1,endID);
|
75
|
+
}
|
76
|
+
}
|
77
|
+
|
78
|
+
quickSort(a, startID, endID);
|
79
|
+
|
56
80
|
}
|
57
|
-
|
81
|
+
|
58
|
-
right--;
|
59
|
-
}
|
60
|
-
if(right <= left){
|
61
|
-
break;
|
62
|
-
}
|
63
|
-
var tmp =newArray[left];
|
64
|
-
newArray[left] =newArray[right];
|
65
|
-
newArray[right] =tmp;
|
66
|
-
left++;
|
67
|
-
right--;
|
68
|
-
}
|
69
|
-
if(newArray[0] < left-1){
|
70
|
-
quickSort(newArray[0],left-1);
|
71
|
-
}
|
72
|
-
if(right+1 < endID){
|
73
|
-
quickSort(right+1,newArray[newArray.length-1]);
|
74
|
-
}
|
75
|
-
return newArray;
|
76
|
-
}
|
77
82
|
var a = [3,7,2,4,6,1,9,8,5];
|
83
|
+
startQuickSort(a, 0, a.length-1);
|
78
|
-
|
84
|
+
console.log(a);
|
79
85
|
```
|
3
追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -39,4 +39,41 @@
|
|
39
39
|
var a = [3,7,2,4,6,1,9,8,5];
|
40
40
|
quickSort(0,a.length-1);
|
41
41
|
console.log(a);
|
42
|
+
```
|
43
|
+
|
44
|
+
お二人の回答を受けての追記
|
45
|
+
```javascript
|
46
|
+
function quickSort(a){
|
47
|
+
var newArray = [];
|
48
|
+
var newArray = a;
|
49
|
+
var pivot = newArray[Math.floor((0 + newArray.length-1)/2)];
|
50
|
+
var left = newArray[0];
|
51
|
+
var right = newArray[newArray.length-1];
|
52
|
+
|
53
|
+
while(true){
|
54
|
+
while(newArray[left]<pivot){
|
55
|
+
left++;
|
56
|
+
}
|
57
|
+
while(pivot<newArray[right]){
|
58
|
+
right--;
|
59
|
+
}
|
60
|
+
if(right <= left){
|
61
|
+
break;
|
62
|
+
}
|
63
|
+
var tmp =newArray[left];
|
64
|
+
newArray[left] =newArray[right];
|
65
|
+
newArray[right] =tmp;
|
66
|
+
left++;
|
67
|
+
right--;
|
68
|
+
}
|
69
|
+
if(newArray[0] < left-1){
|
70
|
+
quickSort(newArray[0],left-1);
|
71
|
+
}
|
72
|
+
if(right+1 < endID){
|
73
|
+
quickSort(right+1,newArray[newArray.length-1]);
|
74
|
+
}
|
75
|
+
return newArray;
|
76
|
+
}
|
77
|
+
var a = [3,7,2,4,6,1,9,8,5];
|
78
|
+
quickSort(a);
|
42
79
|
```
|
2
説明の追加
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
algorithm quicksort
|
1
|
+
algorithm quicksort 渡す配列の汎用化
|
body
CHANGED
File without changes
|
1
誤字修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
###実現したいこと
|
5
5
|
現在のコードでは配列aだけに対応したfunctionになっています。
|
6
6
|
この関数を配列bなど他の配列に対応するためにはどのようにしたらよいでしょうか。
|
7
|
-
(
|
7
|
+
(汎用的にソートする配列を関数に渡すためにはどうしたらよいでしょうか)
|
8
8
|
|
9
9
|
###該当のソースコード
|
10
10
|
```javascript
|