teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

追記

2016/12/08 05:54

投稿

may88seiji
may88seiji

スコア79

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(a){
49
+ function quickSort(startID, endID){
47
- var newArray = [];
48
- var newArray = a;
49
- var pivot = newArray[Math.floor((0 + newArray.length-1)/2)];
50
+ var pivot = a[Math.floor((startID + endID)/2)];
50
- var left = newArray[0];
51
+ var left = startID;
51
- var right = newArray[newArray.length-1];
52
+ var right = endID;
52
53
 
53
- while(true){
54
+ while(true){
54
- while(newArray[left]<pivot){
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
- while(pivot<newArray[right]){
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
- quickSort(a);
84
+ console.log(a);
79
85
  ```

3

追記しました。

2016/12/08 05:54

投稿

may88seiji
may88seiji

スコア79

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

説明の追加

2016/12/05 08:20

投稿

may88seiji
may88seiji

スコア79

title CHANGED
@@ -1,1 +1,1 @@
1
- algorithm quicksort
1
+ algorithm quicksort 渡す配列の汎用化
body CHANGED
File without changes

1

誤字修正

2016/12/05 07:03

投稿

may88seiji
may88seiji

スコア79

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