【问题标题】:Sorting Arrays (Javascript)排序数组 (Javascript)
【发布时间】:2017-03-27 10:15:29
【问题描述】:

我正在尝试构建一个使用选择排序方法的代码,但我遇到了麻烦。当我按下我的按钮时,什么也没有发生。我认为再看一眼代码会帮助我找出问题所在。

我的 swap() 函数正确吗?我的 select() 函数是否正确?我究竟做错了什么?欢迎所有帮助!

<input id="input1" type="number" min="5" max="1000" onchange="first(); sortButton();">

<p id="demo"></p>

<!-- button appears here, once a value is entered into the input field -->
<p id="buttons1" onclick="select();"></p>


<p id="demo2"></p>

<script>


// once input1 value changes this outputs a random value less than N (value of input1) N times, then dumps out the random numbers in id="demo"

var arr = [];
function first() {
var N = document.getElementById("input1").value;
while(arr.length < N)

{var randomnumber = Math.ceil(Math.random()*N);
arr[arr.length] = randomnumber;}
document.getElementById("demo").innerHTML = arr;}


// Once input1 value changes, this buttons appears in id="buttons"
function sortButton() {document.getElementById("buttons1").innerHTML =
'<button type="button" onclick="select();">Select Sort</button>';}


function swap(arr, i, min) {
var temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;}


// meant to sort (selection sort method) the random numbers in id="demo" once the button is clicked

function select() {var len = arr.length, min, i,  j;
for (i = 0; i < len; i++){min = i; for (j = i+1; j < len; j++){if (arr[j] < arr[min]){min = j;}} if (i != min){swap(arr, i, min);} } return arr;}




</script>

【问题讨论】:

  • 内部 Html 应该是一个字符串。使用 arr.join("") 将 arr 转换为字符串
  • 我会在哪里写呢? -- 对我来说是裸露的,我对 js 很陌生,哈哈
  • Blablabla.innerHTML=arr.join("");
  • document.getElementById("demo2").innerHTML = arr.join("");} 对吗?
  • 是的。这是第一点。

标签: javascript arrays sorting selection-sort


【解决方案1】:

您的选择功能一团糟。有一个称为 sort 的标准函数,它可以为您执行此操作:

function select(){
arr.sort(function(a,b){
 //if a<b keep it, if not swap
 if(a<b){
   return 0;
 }else{
   return 1;
 }
 });

https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

你甚至可以缩短它:

function select(){
 arr.sort((a,b)=>a-b);
 }

(查看箭头函数了解更多信息)

【讨论】:

    猜你喜欢
    • 2010-12-02
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 2012-12-10
    • 2014-06-09
    • 2020-11-14
    • 2021-06-02
    • 2013-08-02
    相关资源
    最近更新 更多