除了网页外 网站还需要,上海自贸区注册公司优惠政策,网站建设与运维,外贸的订单在哪个网站找执行效果 插入排序的执行效果是这样的#xff1a; 呃……看不懂吗#xff1f;没关系#xff0c;接着往下看介绍 算法介绍 插入排序#xff08;Insertion Sort#xff09;是一种简单直观的排序算法。它的工作原理是通过构建有序序列#xff0c;对于未排序数据#xff0c…执行效果 插入排序的执行效果是这样的 呃……看不懂吗没关系接着往下看介绍 算法介绍 插入排序Insertion Sort是一种简单直观的排序算法。它的工作原理是通过构建有序序列对于未排序数据在已排序序列中从后向前扫描找到相应位置并插入。插入排序在实现上通常采用原地排序即只需用到 O(1) 的额外空间的排序因而在从后向前扫描过程中需要反复把已排序元素逐步向后挪位为最新元素提供插入空间。 如果对插入排序的效率不是很满意还可以看下它的改进版希尔排序。 算法档案 时间复杂度O(n2) 最优时间复杂度O(n) 平均时间复杂度O(n2) 空间复杂度总共 O(n)需要辅助空间 O(1) 稳定性稳定 算法步骤 从第一个元素开始该元素可以认为已经被排序
取出下一个元素在已经排序的元素序列中从后向前扫描如果该元素已排序大于新元素将该元素移到下一位置重复步骤 3直到找到已排序的元素小于或者等于新元素的位置将新元素插入到该位置后重复步骤 2~5直到所有元素排序完毕 算法实现
#include stdio.hvoid insertion_sort(int array[], int length);void insertion_sort(int array[], int length){int i, j, temp;for (i 1; i length; i){temp array[zxsq-anti-bbcode-i];j i - 1;for ( ; j 0 array[zxsq-anti-bbcode-j] temp; j--){array[j1] array[zxsq-anti-bbcode-j];}array[j1] temp;}
}int main(void)
{int array[] {73, 108, 111, 118, 101, 70, 105, 115, 104, 67, 46, 99, 111, 109};int i, length;length sizeof(array) / sizeof(array[zxsq-anti-bbcode-0]);insertion_sort(array, length);printf(排序后的结果是);for (i 0; i length; i){printf(%d , array[zxsq-anti-bbcode-i]);}putchar(\n);return 0;
}
程序实现如下