• 締切済み

javascript バブルソート

javascriptでバブルソートの実装をしています。 リストにある数値を取得して昇順 or 降順したいのですがうまくいきません。 方法を教えていただけないでしょうか。 よろしくお願いします。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <script type="text/javascript"> function bubbleSort(){ var liVal = document.getElementsByTagName("li"); var array = []; for(var i = 0; i < liVal.length; i++){ for(var j = 0; j < liVal.length-i-1; j++){ array[j] = parseInt(liVal[j].innerHTML); if(array[j] > array[j+1]){ var n = array[j]; array[j] = array[j+1]; array[j+1] = n; } } } } </script> </head> <body> <ul> <li>10</li> <li>5</li> <li>48</li> <li>22</li> <li>679</li> </ul> <p><a href="javascript:void(0);" onclick="bubbleSort()">ソート(降順)</a></p> </body> </html>

みんなの回答

回答No.1

質問するときは「うまくいかない」じゃなくって こうなる想定だったのだが、こんなふうになっているにしないと、回答付きにくいよ。 まず、なぜ並び替えようとしているところで配列にliの値をとるのか。 先に取っておかないと。 function bubbleSort(){ var liVal = document.getElementsByTagName("li"); var array = []; for(var i = 0; i < liVal.length; i ++) array[i] = parseInt(liVal[i].innerHTML); for(var i = 0; i < array.length-1; i++){ for(var j = 0; j < liVal.length-i-1; j++){ if(array[j] > array[j+1]){ var n = array[j]; array[j] = array[j+1]; array[j+1] = n; } } } console.debug(array); } どこ直したかは自分で追ってみて。

すると、全ての回答が全文表示されます。

関連するQ&A