JavaScript bubble sort vs. .sort((a,b) => a-b



javascript气泡排序与.sort((a,b) => a-b相同吗?效率更高吗?为什么?看起来是一样的,有什么不同呢?如果不同,我什么时候使用冒泡排序,什么时候.sort是最好的,为什么?

说,在使用日期的大量照片库中使用,在javascript中使用哪种排序方法最好?

我从来没有尝试过冒泡排序,这(下面)是在fcc上,我想,有什么区别?我从来没有见过这种用法,.sort((a,b) => a-b是这样做的,不是吗?

我确实阅读了所有的排序和冒泡排序,他们大多是不同的语言,我也阅读了MDN文档,仍然想要更清晰。

从freeCodeCamp

const bubbleSort = (arr) => {
let swapped;
do {
swapped = false;
for (let i = 0; i < arr.length - 1; i++) {
if (arr[i] > arr[i + 1]) {
let temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
swapped = true;
}
}
} while (swapped);
return arr;
};

您混淆了比较器函数和排序算法。

比较器函数用于确定一个元素是否大于、小于或等于另一个元素。排序算法通过比较元素对并相应地更新它们的位置来改变列表。排序算法决定运行时效率,而比较器决定排序顺序。

排序算法的效率通常与输入数组的长度有关。总而言之,有三个类:
  • O(n log n)像快速排序,合并排序,堆排序-他们管理有效地通过列表的每次迭代一半的问题
  • O(n²)如选择排序,插入排序,冒泡排序-它们对每个排序元素进行一次迭代
  • 那些更糟糕的,像愚蠢排序或Bogosort -他们大多是学术兴趣

虽然通常较慢,但在特定情况下,某些O(n²)排序器可以可靠地优于O(n log n)排序器,例如当输入仅包含一个无序元素时,插入排序将在第一次迭代后对其进行排序。当你必须对元素成对交换的数组(如[2,1,4,3])排序时,冒泡排序是惊人的,但这不是一种常见的情况。

现代排序实现可以测试这些属性,并相应地选择最佳算法,并做其他聪明的事情(比如当数据超过内存时对页面进行排序)。所以通常,你不会编写自己的排序算法,甚至不会选择一个,而是把它留给语言/系统。

这些都是非常宽泛的。希望还能帮到你。

最新更新