JavaScript实现经典排序算法:冒泡排序与选择排序

0 下载量 187 浏览量 更新于2024-08-31 收藏 38KB PDF 举报
"本文介绍了几种经典排序算法的JavaScript实现,包括冒泡排序和选择排序,提供了详细的代码示例。" 在计算机科学中,排序算法是用于对数据序列进行重新排列,使其按照特定顺序(如升序或降序)排列的算法。在JS中,我们可以实现这些经典的排序算法来处理数组数据。以下是两种常见的排序算法的JS实现: **1. 冒泡排序(Bubble Sort)** 冒泡排序是一种简单的排序算法,通过重复遍历数组并比较相邻元素,将较大的元素逐步“冒”到数组的末尾。其基本步骤如下: - 遍历数组的每一个元素,从第一个到最后一个。 - 对每一对相邻元素做同样的工作,比较它们的大小,如果顺序错误就交换它们。 - 这个过程会持续到数组的最后,最后一个元素会被正确地放在数组的末尾。 - 重复以上步骤,但每次减少最后一个已排序元素的位置,直到整个数组有序。 以下是冒泡排序的JavaScript实现: ```javascript function BubbleSort(array) { var length = array.length; for (var i = length - 1; i > 0; i--) { // 用于缩小范围 for (var j = 0; j < i; j++) { // 在范围内进行冒泡,在此范围内最大的一个将冒到最后面 if (array[j] > array[j + 1]) { var temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } console.log(array); // 打印中间过程 console.log("-----------------------------"); } return array; } var arr = [10, 9, 8, 7, 7, 6, 5, 11, 3]; var result = BubbleSort(arr); console.log(result); ``` **2. 选择排序(Selection Sort)** 选择排序的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 - 从待排序的数组中找到最小元素,并将其与第一个元素交换位置。 - 继续在剩余元素中寻找最小元素,与第二个元素交换。 - 重复以上步骤,直到所有元素排序完毕。 以下是选择排序的JavaScript实现: ```javascript function SelectionSort(array) { var length = array.length; for (var i = 0; i < length; i++) { // 缩小选择的范围 var min = array[i]; // 假定范围内第一个为最小值 var index = i; // 记录最小值的下标 for (var j = i + 1; j < length; j++) { // 查找范围内的最小元素 if (array[j] < min) { min = array[j]; index = j; } } // 将找到的最小元素与当前位置的元素交换 if (index !== i) { var temp = array[i]; array[i] = array[index]; array[index] = temp; } } return array; } var arr = [10, 9, 8, 7, 7, 6, 5, 11, 3]; var result = SelectionSort(arr); console.log(result); ``` 这两种排序算法各有特点:冒泡排序的时间复杂度在最坏情况下是O(n²),但对部分已经排序的数组有较好的效率;选择排序的时间复杂度始终保持在O(n²),但它可以在任何位置找到最小/最大元素,因此在某些情况下可能更快。在实际应用中,通常会使用更高效的排序算法,如快速排序、归并排序等。