直接插入排序JS代码
时间: 2024-09-24 08:19:46 浏览: 22
直接插入排序是一种简单的排序算法,它的工作原理是通过遍历数组,将每个元素逐个插入到已排序的部分的适当位置。以下是JavaScript实现直接插入排序的代码:
```javascript
function insertionSort(arr) {
if (arr.length <= 1) {
return arr;
}
for (let i = 1; i < arr.length; i++) {
let key = arr[i];
let j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
return arr;
}
// 示例
let numbers = [9, 5, 7, 3, 6];
console.log(insertionSort(numbers)); // 输出: [3, 5, 6, 7, 9]
相关问题
生成前端排序算法的代码
当提到前端排序算法的代码时,常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序等。我将为你提供一个示例代码,展示如何使用JavaScript实现快速排序算法:
```javascript
// 快速排序函数
function quickSort(arr) {
// 递归终止条件:数组长度小于等于1时,直接返回数组
if (arr.length <= 1) {
return arr;
}
// 选择一个基准元素
const pivot = arr[Math.floor(arr.length / 2)];
// 分割数组为左右两个子数组
const left = [];
const right = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] < pivot) {
left.push(arr[i]);
} else if (arr[i] > pivot) {
right.push(arr[i]);
}
}
// 递归调用快速排序函数,并拼接左、基准、右子数组
return quickSort(left).concat(pivot, quickSort(right));
}
// 示例用法
const unsortedArray = [7, 2, 9, 1, 6, 3];
const sortedArray = quickSort(unsortedArray);
console.log(sortedArray); // 输出 [1, 2, 3, 6, 7, 9]
```
以上代码演示了如何使用快速排序算法对一个数组进行排序。你可以将待排序的数组传递给`quickSort`函数,并通过调用`console.log`打印排序后的结果。
请注意,这只是一个示例代码,你可以根据实际需求进行修改或扩展。同时,还有其他排序算法可供选择,具体使用哪种算法取决于数据规模和性能需求。
希尔排序 javascript
希尔排序(Shell Sort)是一种基于插入排序的算法,属于就地排序算法,即不需要额外的存储空间进行排序。希尔排序是直接插入排序算法的一种更高效的改进版本。
以下是使用JavaScript实现希尔排序的一个简单例子:
```javascript
function shellSort(arr) {
var len = arr.length;
var gap = Math.floor(len / 2);
// 逐步缩小间隔,进行插入排序
while (gap > 0) {
for (var i = gap; i < len; i++) {
var temp = arr[i];
var j = i;
while (j >= gap && arr[j - gap] > temp) {
arr[j] = arr[j - gap];
j -= gap;
}
arr[j] = temp;
}
gap = Math.floor(gap / 2); // 间隔缩小
}
return arr;
}
// 使用例子:
var arr = [5, 3, 7, 4, 6, 8];
console.log("Original array: " + arr);
shellSort(arr);
console.log("Sorted array: " + arr);
```
在这个代码中,首先创建一个数组 `arr`,然后逐步减小间隔值 `gap`,对每个间隔值下的元素进行插入排序。在每次迭代中,通过比较和交换元素来对当前间隔内的元素进行排序。当间隔值减小到0时,整个数组就被排序好了。
需要注意的是,希尔排序的时间复杂度在最好和最坏的情况下可能达到 O(n^2),但在平均情况下可以接近 O(n log n),因此它通常在内存和性能要求较高的场合使用。