使用插入排序方法从最大到最小排序数字

时间:2017-10-03 13:24:21

标签: javascript html

我正在尝试使用插入排序方法将用户输入(.prompt)中的数字从最大到最小排序。我很难理解如何在我的html代码中应用此方法。任何意见是极大的赞赏!

3 个答案:

答案 0 :(得分:0)

根据我的唯一区别可能是接口部分为 提示将输入作为字符串,您可以将输入作为csv,然后在逗号上拆分并获取子字符串数组,然后使用parseInt并像往常一样用于排序。

答案 1 :(得分:0)

请注意,这假定用户只输入数字。您需要修改此代码以考虑输入各种数据的用户。

更新答案

如果您熟悉mapparseFloat,这是不言自明的。 parseFloat只是将字符串转换为浮点数(1.5,6.004等)。 map在数组的每个元素上调用一个回调函数,并返回一个包含结果的数组。在此代码中,map正在对数组的每个元素执行parseFloat并返回结果。

哦,还有一件事并不明显; sort根据字符串Unicode代码点进行排序(有关详细信息,请参阅here)。因此,10在2之前,因为1在2之前。这就是为什么我们需要.sort((a,b) => (a-b)),这是我从this answer的评论中得到的。

const numberArray = prompt('Enter several numbers with a space between each').split(' ');

numberArray.map(element => parseFloat(element)).sort((a,b) => (a-b)).reverse();

第一个答案,但是将6排序为大于10,因为我认为6在ASCII之前是1。

const numberArray = prompt('Enter several numbers with a space between each').split(' ');

numberArray.map(element => parseFloat(element));

function insertionSort(array) {
  for (let i = 0; i < array.length; i += 1) {
    const temp = array[i];
    let j = i - 1;
    while (j >= 0 && array[j] > temp) {
      array[j + 1] = array[j];
      j -= 1;
    }
    array[j + 1] = temp;
  }
  return array.reverse();
}

insertionSort(numberArray);

我从Benoit Vallon's blog

获得了插入排序算法

答案 2 :(得分:0)

如上一个答案中所述。它与您使用任何其他语言的情况相同。

然而,您需要更新您的问题,以准确反映您尝试过的内容,并提出更具精确性的内容。

尽管如此,这里有一个简单的示例,说明如何实现这一目标。请注意,我没有进行任何类型验证或转换。所以你要确保用户输入一个数字

var toSort=[];


$('#sort').on('click',function(){
  var result= insertionSort(toSort);
  $('p').html(result.toString());
});

$('#prompt').on('click',function(){
  toSort.push(prompt("Enter a number",0));
});



/* from http://blog.benoitvallon.com/sorting-algorithms-in-javascript/the-insertion-sort-algorithm/ */

function insertionSort(array) {
  for(var i = 0; i < array.length; i++) {
    var temp = array[i];
    var j = i - 1;
    while (j >= 0 && array[j] > temp) {
      array[j + 1] = array[j];
      j--;
    }
    array[j + 1] = temp;
  }
  return array;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button id="prompt">Prompt</button>


<button  id="sort">Sort</button>

<h1>End result:</h1>
<p></p>