图解算法系列之插入排序(优化版)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图解算法系列之插入排序(优化版)相关的知识,希望对你有一定的参考价值。
(1)算法描述
对于给定的一个线性空间,遍历考察每一个元素,将当前元素拷贝一份,并将前一个元素拷贝到当前元素的原位置。拷贝出来的元素与前一个元素进行比较,如果满足前一个元素大于或小于当前元素就将当前拷贝出来的元素放到当前位置,否则继续向前比较。
(2)图解算法
(3)C/C++代码实现
Custom.h
void insertionAdvancedSort(int arr[], int number);
Custom.cpp
void insertionAdvancedSort(int arr[], int number) { // 一次比较每一个元素 for (int i = 0; i < number; i++) { // 假设当前的元素就是最大值 int current = arr[i]; int j; // j > 0表示确保比较的元素没有到头 // arr[j-1] > max表示当前元素max比指定的元素arr[j-1]小 for (j = i; j > 0 && arr[j - 1] > current; j--) { // 交换元素 arr[j] = arr[j-1]; } // 当前这个元素与指定的元素交换 arr[j] = current; } }
(4)Java代码实现
public class InsertionSortAdvanced {
public static void sort(int[] arr, int number) {
for (int i = 0; i < number; i++) {
int current = arr[i];
int j;
for (j = i; j > 0 && arr[j-1] > current; j--) {
arr[j] = arr[j-1];
}
arr[j] = current;
}
}
}
(5)时间复杂度分析
在最坏的情况下,时间复杂度仍然是O(n^2)。
以上是关于图解算法系列之插入排序(优化版)的主要内容,如果未能解决你的问题,请参考以下文章