如何使用气泡排序在 Javascript 中对 2D 数组进行排序
How to sort a 2D array in Javascript using bubble sort
这是我的函数,需要帮助使其与 2D 数组一起使用,以便当我通过时
[ [39, 43, 32], [300, 44, 1]
]它返回
[[1, 32, 39], [43, 44, 300]
]function bubbleSort(items) {
var length = items.length;
for (var i = 0; i < length; i++) {
for (var j = 0; j < (length - i - 1); j++) {
if(items[j] > items[j+1]) {
var tmp = items[j];
items[j] = items[j+1];
items[j+1] = tmp;
}
}
}
}
对于您给出的确切示例,解决方案可能是连接两个子数组,对结果进行排序并将结果分成两个子数组。
function bubbleSort(items) {
var length = items.length;
for (var i = 0; i < length; i++) {
for (var j = 0; j < (length - i - 1); j++) {
if(items[j] > items[j+1]) {
var tmp = items[j];
items[j] = items[j+1];
items[j+1] = tmp;
}
}
}
return items;
}
var a = [ [39, 43, 32], [300, 44, 1] ];
var a2 = bubbleSort(a[0].concat(a[1]));
a[0] = a2.slice(0,3);
a[1] = a2.slice(3,6);
如果数组有很多条目,这将变得非常慢。如果条目具有不同的长度,它也会失败。如果它们具有不同的长度,则需要先解析数组,然后将各个长度保存在第二个数组中,以便在最后正确分割结果。连接和排序将是相同的。
可能最好的解决方案是首先将嵌套数组"取消嵌套"到平面数组中,对其进行排序,然后将值复制回嵌套数组:
function bubbleSortNested(items) {
// create a flat copy of the nested items array
var flat = [];
for (var i = 0; i < items.length; i++) {
flat = flat.concat(items[i]);
}
// sort flat array
for (var i = 0; i < flat.length; i++) {
for (var j = 0; j < (flat.length - i - 1); j++) {
if(flat[j] > flat[j+1]) {
var tmp = flat[j];
flat[j] = flat[j+1];
flat[j+1] = tmp;
}
}
}
// copy sorted flat array back into original nested array
for (var i = items.length-1; i>=0; i--) {
items[i] = flat.slice(-items[i].length);
flat.length -= items[i].length;
}
return items;
}
res = bubbleSortNested([ [39, 43, 32], [300, 44, 1] ]);
console.log(res);
输出:
[[1, 32, 39], [43, 44, 300]
]
相关文章:
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 在数组的 2/3 上调用自身的排序算法
- 数组值的排序以匹配另一个数组ES6
- 按不同项目对对象数组进行排序
- 根据Javascript中的字符串值对数组的数组进行排序
- 在不同的javascript数组中对json响应进行排序
- 对对象数组中的数组进行排序
- 按特定键对对象数组进行排序
- 使用jquery根据数组对表行进行排序
- 尝试对对象数组进行排序但拼接不是一个函数
- 对javascript中某些键的对象数组进行排序
- Javascript按数字顺序排序()数组
- Javascript排序索引链接数组
- 在jquery中对时间数组进行排序
- 如何在具有相同 ID 的 Javascript 中按排序函数对关联数组进行排序
- Javascript中的多维数组排序索引问题
- 如何在mongodb中根据数组内容的差异进行排序
- 在Javascript中对具有特定异常的对象数组进行排序
- 数组数据排序类似mysql查询
- 在小于O(n)时间内找到(排序)数组中的重复元素