前提・実現したいこと
配列の先頭要素の大小によってクイックソートをする方法について行き詰ってしまったのでお力添えをお願いしたいです。
ソートする配列が一般的な配列の場合は上手くいくのですがafterの例のように配列の先頭要素(7,3,5,4,1,2,4)でソートするようプログラムを書き換えたところうまく機能しませんでした。
keyの部分を書き換えるだけでうまくいくと思っていたのですが結果はでませんでした。
ご教授のほどよろしくお願いします。
該当のソースコード
/*before*/ function qsort(lst){ if (lst.length <= 1) return lst var key = lst[0] var lt = [] var eq = [] var gt = [] for (var i = 0; i < lst.length; i++){ var ele = lst[i] if (ele < key) lt.push(ele) else if (ele > key) gt.push(ele) else eq.push(ele) } return qsort(lt).concat(eq).concat(qsort(gt)) } arr=[7,3,5,4,1,2,4] console.log(qsort(arr)) /*実行結果*/ [1, 2, 3, 4, 4, 5, 7] /*after*/ function qsort(lst){ if (lst.length <= 1) return lst var key = lst[0][0] var lt = [] var eq = [] var gt = [] for (var i = 0; i < lst.length; i++){ var ele = lst[i] if (ele < key) lt.push(ele) else if (ele > key) gt.push(ele) else eq.push(ele) } return qsort(lt).concat(eq).concat(qsort(gt)) } arr=[[7,0],[3,1],[5,2],[4,3],[1,4],[2,5],[4,6]]; console.log(qsort(arr))
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/14 08:32