Javascript 我想让这个冒泡排序函数工作,但它给了我最大的调用堆栈大小超出 函数bubbleSort(arr){ var temp=arr.slice(0) 对于(变量i=0;i
我不是在看算法,因为我认为你是对的。问题在于数组之间的比较。尝试使用此功能Javascript 我想让这个冒泡排序函数工作,但它给了我最大的调用堆栈大小超出 函数bubbleSort(arr){ var temp=arr.slice(0) 对于(变量i=0;i,javascript,Javascript,我不是在看算法,因为我认为你是对的。问题在于数组之间的比较。尝试使用此功能 function bubbleSort(arr) { var temp = arr.slice(0) for (var i = 0; i < arr.length; i ++) { if (arr[i + 1] < arr[i]) { var temp_1 = arr[i+1] var temp_2 = arr[i]
function bubbleSort(arr) {
var temp = arr.slice(0)
for (var i = 0; i < arr.length; i ++) {
if (arr[i + 1] < arr[i]) {
var temp_1 = arr[i+1]
var temp_2 = arr[i]
arr[i] = temp_1
arr[i+1] = temp_2
}
}
if (temp != arr) {
return bubbleSort(arr)
}
return arr
}
console.log(bubbleSort([2,1,5,4,10,7,6,9,3,8]))
这里发生的是那个临时工数组总是返回true,您可以通过添加
JSON.stringify(temp) !== JSON.stringify(array);
在比较之前
解释:JSON#stringify比较从数组中获得的两个字符串。实现比较的另一种方法是逐个比较所有项目的长度和相等性。如果您使用“!=”操作符,您总是只能得到“true”,因为这两个数组是对象的两个不同实例
完整代码
console.log(temp !== array)
函数bubbleSort(arr){
var temp=阵列切片(0);
对于(变量i=0;i
我不是在看算法,因为我认为你是对的。问题在于数组之间的比较。尝试使用此功能
function bubbleSort(arr) {
var temp = arr.slice(0)
for (var i = 0; i < arr.length; i ++) {
if (arr[i + 1] < arr[i]) {
var temp_1 = arr[i+1]
var temp_2 = arr[i]
arr[i] = temp_1
arr[i+1] = temp_2
}
}
if (temp != arr) {
return bubbleSort(arr)
}
return arr
}
console.log(bubbleSort([2,1,5,4,10,7,6,9,3,8]))
这里发生的是那个临时工数组总是返回true,您可以通过添加
JSON.stringify(temp) !== JSON.stringify(array);
在比较之前
解释:JSON#stringify比较从数组中获得的两个字符串。实现比较的另一种方法是逐个比较所有项目的长度和相等性。如果您使用“!=”操作符,您总是只能得到“true”,因为这两个数组是对象的两个不同实例
完整代码
console.log(temp !== array)
函数bubbleSort(arr){
var temp=阵列切片(0);
对于(变量i=0;i
==
和=代码>正在比较引用,所以它们总是将两个数组视为不同的(除非您比较同一实例)。检查['a']=['a']
:它将是假
。
您可以使用标志指示发生了更改:
函数bubbleSort(arr){
var temp=arr.slice(0)
变量更改=错误
对于(变量i=0;i
函数bubbleSort(arr){
变量更改=错误
做{
var temp=arr.slice(0)
更改=错误
对于(变量i=0;i
==
和=代码>正在比较引用,所以它们总是将两个数组视为不同的(除非您比较同一实例)。检查['a']=['a']
:它将是假
。
您可以使用标志指示发生了更改:
函数bubbleSort(arr){
var temp=arr.slice(0)
变量更改=错误
对于(变量i=0;i
函数bubbleSort(arr){
变量更改=错误
做{
var temp=arr.slice(0)
更改=错误
对于(变量i=0;i
两个不同的数组将始终是=代码>相互关联。两个不同的数组总是=代码>互相问候。非常感谢!我不知道比较这两个数组(它们包含相同的元素并且具有相同的长度)会始终返回false!我很感激!非常感谢你!我不知道比较这两个数组(它们包含相同的元素并且具有相同的长度)会始终返回false!我很感激!非常感谢您详细阐述了比较,并建议我采取不同的方式!我将致力于在while循环中使用flag!非常感谢您详细阐述了比较,并建议我采取不同的方式!我将致力于在while循环中使用flag!