返回
从python到前端,算法选择排序应该这样玩
前端
2024-02-06 17:31:04
算法图解之[选择排序]
大家好,我是前端er,最近开始看《算法图解》,这本书写得实在是好,通俗易懂,适合入门。本篇笔记搬运了《算法》图解中的选择排序的部分,原书是用python实现算法的,本前端er觉得不得劲,用JavaScript实现了一遍。希望大家能够从本文中学到选择排序的精髓,并在今后的工作中使用它来解决问题。
什么是选择排序?
选择排序是一种简单直观的排序算法,它通过遍历整个序列,并选择最小的元素,将之与当前元素交换。在经过n轮循环之后,找到最小元素并将其放置在序列的最左边。
选择排序的算法步骤
- 从序列的第一个元素开始,将其与序列中的其他元素进行比较,找到最小的元素。
- 将最小的元素与序列的第一个元素交换。
- 从序列的第二个元素开始,将其与序列中的其他元素进行比较,找到最小的元素。
- 将最小的元素与序列的第二个元素交换。
- 重复步骤3和步骤4,直到序列中的所有元素都被排序。
选择排序的JavaScript实现
function selectionSort(arr) {
let minIndex;
for (let i = 0; i < arr.length - 1; i++) {
minIndex = i;
for (let j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
if (minIndex !== i) {
[arr[i], arr[minIndex]] = [arr[minIndex], arr[i]];
}
}
return arr;
}
选择排序的时间复杂度
选择排序的时间复杂度为O(n^2),因为它需要比较每个元素与序列中的其他所有元素,总共需要进行n*(n-1)/2次比较。
选择排序的空间复杂度
选择排序的空间复杂度为O(1),因为它不需要额外空间。
选择排序的优缺点
选择排序的优点在于算法简单,容易理解和实现。它的缺点在于时间复杂度高,对于大型数据集不适合。
选择排序的应用场景
选择排序主要用于小型数据集的排序,或者在需要简单直观的排序算法时使用。
总结
选择排序是一种简单直观的排序算法,它通过遍历整个序列,并选择最小的元素,将之与当前元素交换。在经过n轮循环之后,找到最小元素并将其放置在序列的最左边。选择排序的时间复杂度为O(n^2),空间复杂度为O(1)。选择排序主要用于小型数据集的排序,或者在需要简单直观的排序算法时使用。