我正在尝试使用插入排序方法将用户输入(.prompt)中的数字从最大到最小排序。我很难理解如何在我的html代码中应用此方法。任何意见是极大的赞赏!
答案 0 :(得分:0)
根据我的唯一区别可能是接口部分为 提示将输入作为字符串,您可以将输入作为csv,然后在逗号上拆分并获取子字符串数组,然后使用parseInt并像往常一样用于排序。
答案 1 :(得分:0)
请注意,这假定用户只输入数字。您需要修改此代码以考虑输入各种数据的用户。
如果您熟悉map
和parseFloat
,这是不言自明的。 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();
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);
获得了插入排序算法
答案 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>