插入排序算法实现
发布时间:2023-05-18 22:32:32
插入排序算法是一种基本的排序算法,它的思想是将一个序列逐个插入到已排序序列中的合适位置,从而得到一个有序序列。插入排序算法的时间复杂度为O(n^2),因此对于大规模数据排序可能不是最优的方法。但是,对于小规模数据及部分有序的数据是非常高效的。
插入排序算法的实现可以分为两种方法: 种方法是将待排序的元素插入已排序序列的合适位置;第二种方法是先将待排序元素与已排序元素逐个比较,确定其在序列中的位置,再将其插入到相应的位置。以下是第二种方法的实现。
C++代码:
void insertion_sort(int arr[], int n) {
for (int i = 1; i < n; i++) {
int temp = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > temp) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = temp;
}
}
Python代码:
def insertion_sort(arr):
for i in range(1, len(arr)):
temp = arr[i]
j = i - 1
while j >= 0 and arr[j] > temp:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = temp
上述代码中,首先从第二个元素开始遍历数组,将当前元素保存在一个临时的变量temp中。然后,从当前元素的前一个元素开始向前遍历已排序的元素,如果已排序元素大于temp,则将该元素后移一位,直到找到一个小于等于temp的元素或者已经到了数组的起始位置。最后,将temp插入到该位置之后,完成了当前元素的排序。
插入排序算法的优劣分析:
插入排序算法的时间复杂度为O(n^2),与冒泡排序算法和选择排序算法一样,在大规模数据排序时不是最优的方法。但是,在小规模数据排序和部分有序数据排序时都非常高效。此外,插入排序算法是一种稳定的排序算法,因为排序过程中不会改变相同元素的位置关系。
在实际应用中,需要根据数据的特点选择不同的排序算法。当数据规模较小或者部分有序时,插入排序算法是一种非常好的选择。此外,插入排序算法还可以用作快速排序算法等其他排序算法的优化算法,提高算法的效率。
