#每天一个知识点# 程序员 / 技术岗的兄弟,别再把「不会表达」归因为内向了!
我带过 100 + 技术人练表达,总结出3 句万能公式,直接套用,汇报不慌、面试不卡、分享不尬:
汇报公式:我负责 XX 模块→解决了 XX 问题→带来了 XX 价值
面试公式:这个项目的难点是 XX→我用 XX 方法搞定→最终达成 XX 结果
分享公式:先讲一个痛点→再给一个方案→最后留一个思考
不用背稿子,不用练口才,就靠这 3 个逻辑,把你的技术实力说清楚、讲明白。
#每天一个知识点#
3. 插入排序(Insertion Sort)
function insertionSort(arr) {
const len = arr.length;
for (let i = 1; i < len; i++) {
let j = i - 1;
const current = arr[i];
while (j >= 0 && arr[j] > current) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = current;
}
return arr;
}
// 示例
const arr = [5, 3, 8, 4, 2];
console.log(insertionSort(arr)); // output: [2, 3, 4, 5, 8]
插入排序的时间复杂度为 O(n^2),其中n代表数组的长度。虽然插入排序时间复杂度和冒泡排序、选择排序同样地为 O(n^2),但是在数据规模较小的时候,它比冒泡排序和选择排序更快,是一个稳定的排序算法。
空间复杂度为 O(1),它只需要一个临时变量来存储当前处理的元素,对空间复杂度没有额外的开销。
插入排序的基本思想是:对于每个未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
插入排序相比于冒泡排序和选择排序,不需要进行太多的元素交换操作,而是通过移动元素来完成排序,在一些特定情况下效率更高一些。当数据集合基本有序时,插入排序的时间复杂度将大大降低,甚至可以达到线性级别,优化效果比较明显。
3. 插入排序(Insertion Sort)
function insertionSort(arr) {
const len = arr.length;
for (let i = 1; i < len; i++) {
let j = i - 1;
const current = arr[i];
while (j >= 0 && arr[j] > current) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = current;
}
return arr;
}
// 示例
const arr = [5, 3, 8, 4, 2];
console.log(insertionSort(arr)); // output: [2, 3, 4, 5, 8]
插入排序的时间复杂度为 O(n^2),其中n代表数组的长度。虽然插入排序时间复杂度和冒泡排序、选择排序同样地为 O(n^2),但是在数据规模较小的时候,它比冒泡排序和选择排序更快,是一个稳定的排序算法。
空间复杂度为 O(1),它只需要一个临时变量来存储当前处理的元素,对空间复杂度没有额外的开销。
插入排序的基本思想是:对于每个未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
插入排序相比于冒泡排序和选择排序,不需要进行太多的元素交换操作,而是通过移动元素来完成排序,在一些特定情况下效率更高一些。当数据集合基本有序时,插入排序的时间复杂度将大大降低,甚至可以达到线性级别,优化效果比较明显。
展开
评论
1