插入排序算法是一种简单直观的排序算法,其基本思路是从序列的第二个元素开始,逐个将每个元素插入到已排序的序列中,直到所有元素都被插入完成。它的时间复杂度是O(n²),因此适用于小规模数据的排序。
下面我们来详细讲解一下插入排序算法的使用方法和实现过程:
算法思路
- 从序列的第二个元素开始,逐个将每个元素插入到已排序的序列中
- 对于未排序的元素,依次与已排序的元素进行比较,找到合适的位置插入
- 重复以上两个步骤,直到所有元素都被插入完成
代码实现
以下是使用JavaScript语言实现插入排序的示例代码:
function insertionSort(arr) {
for (let i = 1; i < arr.length; i++) {
let j = i - 1;
let temp = arr[i];
while (j >= 0 && arr[j] > temp) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = temp;
}
return arr;
}
console.log(insertionSort([3, 2, 1])); // [1, 2, 3]
console.log(insertionSort([12, 45, 21, 8, 1])); // [1, 8, 12, 21, 45]
以上代码中,我们定义了一个insertionSort
函数来实现插入排序。首先,我们从第二个元素开始遍历整个数组,假设当前要插入的元素为arr[i]
。然后,我们找到arr[i]
的合适位置,即将arr[i]
插入到已排序的数组中。我们采用while循环从右往左遍历已排序的数组,如果已排序的数组中的元素比arr[i]
大,就将这个元素往右移动一位,继续遍历。最后,将arr[i]
插入到合适的位置即可。
示例说明
以下是两条插入排序的示例说明:
示例一
我们有一个数组[3, 2, 1]
,对它进行插入排序。初始时,数组的第一个元素3
已经是排好序的了(因为它是数组的第一个元素)。接下来,我们需要将数组中的元素2
插入到已排序的数组中。由于2
比3
小,因此我们将3
往右移动一位,把2
插入到3
的位置。此时数组变为[2, 3, 1]
。接下来,我们需要将数组中的元素1
插入到已排序的数组中。由于1
比2
小,因此我们将2
往右移动一位,再将1
插入到2
的位置。此时数组变为[1, 2, 3]
,排序完成。
示例二
我们有一个数组[12, 45, 21, 8, 1]
,对它进行插入排序。初始时,数组的第一个元素12
已经是排好序的了(因为它是数组的第一个元素)。接下来,我们需要将数组中的元素45
插入到已排序的数组中。由于45
比12
大,因此45
不需要移动。接下来,我们需要将数组中的元素21
插入到已排序的数组中。由于21
比45
小,因此我们将45
往右移动一位,再将21
插入到45
的位置。此时数组变为[12, 21, 45, 8, 1]
。接下来,我们需要将数组中的元素8
插入到已排序的数组中。由于8
比45
小,因此我们将45
往右移动一位,接着我们将21
往右移动一位,再将8
插入到21
的位置。此时数组变为[12, 8, 21, 45, 1]
。最后,我们需要将数组中的元素1
插入到已排序的数组中。由于1
比45
小、比21
小、比8
小,因此我们将45
往右移动一位,接着我们将21
往右移动一位,再将8
往右移动一位,最后将1
插入到8
的位置。此时数组变为[1, 8, 12, 21, 45]
,排序完成。
通过以上两个示例,我们可以更加深入地理解插入排序算法的过程和使用方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解插入排序算法原理与使用方法 - Python技术站