Javascript 如何在冒泡排序中获得第n次迭代后的数组?
下面是javascript中的冒泡排序算法(为了简洁起见,删除了Javascript 如何在冒泡排序中获得第n次迭代后的数组?,javascript,arrays,printing,iteration,bubble-sort,Javascript,Arrays,Printing,Iteration,Bubble Sort,下面是javascript中的冒泡排序算法(为了简洁起见,删除了swap函数) 所以本质上如果我调用bubblesort(array,5),它应该返回[1,-2,3,4,5,8,9]如果需要第N次迭代,只需运行整个过程N次,然后返回结果 var array = [3, 5, 8, 4, 1, 9, -2] const bubbleSort = (arr, iter) => { for (var n = 0; n < iter; n++) { for (var i = 0
swap
函数)
所以本质上如果我调用
bubblesort(array,5)
,它应该返回[1,-2,3,4,5,8,9]如果需要第N次迭代,只需运行整个过程N次,然后返回结果
var array = [3, 5, 8, 4, 1, 9, -2]
const bubbleSort = (arr, iter) => {
for (var n = 0; n < iter; n++) {
for (var i = 0; i < arr.length; i++) {
for (var j = 1; j < arr.length; j++) {
if (arr[j - 1] > arr[j]) {
swap(arr, j - 1, j);
}
}
}
}
return arr;
};
bubbleSort(array,5)
var数组=[3,5,8,4,1,9,-2]
常量泡泡运动=(arr,iter)=>{
对于(var n=0;narr[j]){
互换(arr,j-1,j);
}
}
}
}
返回arr;
};
bubbleSort(数组,5)
您可以使用for
循环和forEach
内部循环来交换元素
let数组=[3,5,8,4,1,9,-2]
函数bubblesort(arr,n){
for(设x=0;x{
if(arr[i+1] console.log(bubblesort(array,5))
如果我做对了,在i==iter
break
循环上?你的代码不正确。@PM77-1嗯,你能更具体一点吗?冒泡排序代码是我从wiki中提取的经典代码。您的内部循环不依赖于I
@PM77-1,谢谢,已修复。您添加的外部代码是添加额外负载,而不提供任何帮助。数组将在n的值变为偶数1之前进行排序您的意思是什么?我不明白。bubbleSort(数组,5)
对数组进行5次排序,然后返回结果吗?是的,完全正确!它将(尝试)比需要多排序4次,这是额外的,并且根本不会更改数组。当N次迭代(不是完全排序)完成时,我们要求打破循环,但仍然没有得到它。一次迭代和一次“完全排序”有什么区别?“完全分类”是什么意思?这里有部分排序吗?是的,部分排序是用户在这里要求的。需要多次迭代(如果数组尚未排序)才能获得一个完整的排序,这与我的答案几乎完全相同,我得到了2次否决票。@Nenad此函数只是打印到控制台。我希望函数在第n次迭代后返回该arr。我计划稍后在我的另一个函数中使用它。@theprogrammer094它在n次迭代后返回数组,console.log只是用于演示。确实,你是对的。我的坏,没有看到外面的for循环。我认为这是可行的。谢谢。@programmer094您可以在这种情况下使用生成器
After iteration 1: array = [3, 5, 4, 1, 8, -2, 9]
After iteration 2: array = [3, 4, 1, 5, -2, 8, 9]
.
.
After iteration 5: array = [1, -2, 3, 4, 5, 8, 9]
After iteration 6: array = [-2, 1, 3, 4, 5, 8, 9]
var array = [3, 5, 8, 4, 1, 9, -2]
const bubbleSort = (arr, iter) => {
for (var n = 0; n < iter; n++) {
for (var i = 0; i < arr.length; i++) {
for (var j = 1; j < arr.length; j++) {
if (arr[j - 1] > arr[j]) {
swap(arr, j - 1, j);
}
}
}
}
return arr;
};
bubbleSort(array,5)