简单排序算法时间空间复杂度分析及应用(2)-插入排序
来源:互联网 发布:怎样做好淘宝店 编辑:程序博客网 时间:2024/06/05 05:42
简单排序算法时间空间复杂度分析及应用(2)-插入排序
上一篇文章提到了一些新的概念,不言而喻,概念的功能对人类来说是一项伟大的发现,百度对“概念”的定义是这样的:概念具有两个基本特征,即概念的内涵和外延;概念的内涵就是指这个概念的含义,即该概念所反映的事物对象所特有的属性。
简而言之,内循环,外循环,循环方向,循环节点这些概念能让我们的大脑清晰清楚算法的作用过程和结果。
插入排序同样也有内循环和外循环,外循环的循环节点将已确定区域和待确定区域分隔开来,该节点属于待确定区域(即待确定节点),循环方向由左向右(如图所示),外循环的起点是第二个节点,循环终点是最后一个节点。内循环是子已确定区域进行的,方向是和外循环方向相反,循环起点是外循环节点的前一个节点,终点是第一个小于外循环节点的内循环节点,如图所示。对于比较简答易懂算法例子分析微博文章推荐给大家:以人的身高站队的例子,下面我也借鉴了这位大神的微博图片,请参考:
内循环排序图:
插入排序的时间复杂度是n的平方,同冒泡排序一样,当数据一开始就已经排好序了时间复杂度就是0,当数据一开始就是倒序的,复杂度就是n*(n-1)/2,这两种情况是一个最小,一个最大的两种情况。这样的情况和冒泡排序一样
插入排序java实现(1)先查后插:
/* * 插入排序(insert Sort) * 时间复杂度为O(n的平方) ,最好的情况是元素交换次数为0,元素比较次数为n-1。 * @param sortOrder true表示增序,FALSE表示降序 * 第一种插入排序:先查移动元素节点,然后转移元素集合,将查和移位分开处理,即:先查后插 *//* * 我这个插入排序问题很大,时间复杂度稍微比真正的插入排序要多一点,多在了内循环:两个并列的内循环 */public static void insertSort1(boolean sortOrder){int k ;for(int m = 1 ; m < array.length ; ++m){int n;for(n = m - 1 ; n >= 0 ; --n)if((array[m] > array[n]&&sortOrder)||(array[m] < array[n]&&!sortOrder))break;int z ;k = array[m];for(z = m-1 ; z > n ; --z)array[z+1] = array[z];//if(array[m]!=k)array[z+1] = k;}}
插入排序(2)边查边插:
* 插入排序(insert Sort) * 时间复杂度为O(n的平方) ,最好的情况是元素交换次数为0,元素比较次数为n-1。 * @param sortOrder true表示增序,FALSE表示降序 * 第一种插入排序:这种插入排序没有查找节点的步骤,只有比较移动元素步骤 * 这一种插入拍寻:插入排序改进,内循环只有一个,即边查边插 */public static void insertSort2(boolean sortOrder){int k;for(int m = 1 ; m < array.length ; ++ m){int n ;k = array[m];for(n = m-1 ; n >= 0; --n)if((array[n] > k && sortOrder)||(array[n] < k && !sortOrder))array[n+1] = array[n];else break;array[n+1] = k;}}
0 0
- 简单排序算法时间空间复杂度分析及应用(2)-插入排序
- 简单排序算法时间空间复杂度分析及应用(4)-二分插入排序
- 简单排序算法时间空间复杂度分析及应用(1)-冒泡排序
- 简单排序算法时间空间复杂度分析及应用(6)-鸡尾酒排序(双冒泡排序)
- 简单排序算法时间空间复杂度分析及应用(3)-快速排序
- 简单排序算法时间空间复杂度分析及应用(5)-堆排序
- 简单排序算法时间空间复杂度分析及应用(7)-希尔排序
- 简单排序算法时间空间复杂度分析及应用(8)-归并排序
- 各种排序算法及时间&空间复杂度详解(一)简单排序算法
- 插入排序算法的java实现及时间复杂度分析
- 算法 插入排序 的 JS实现及时间复杂度分析
- 排序算法之 插入排序、希尔(shell)排序 及其时间复杂度和空间复杂度
- 常用排序算法的时间和空间复杂度及算法时间复杂度的简单计算
- 常用排序算法--冒泡排序及改进和插入排序时间复杂度分析
- 各种排序算法时间复杂度和空间复杂度分析
- 各种排序算法时间复杂度及空间复杂度
- 各种排序算法比较及时间复杂度,空间复杂度
- 堆排序算法及时间复杂度分析
- 朱鸿恣论文:Exploiting Temporal Dependency for Opportunistic Forwarding in Urban Vehicular Networks的心得
- PHP对于Unix时间戳的转换
- part-20 建立时间Setting Time
- 797D Broken BST
- 乱搞
- 简单排序算法时间空间复杂度分析及应用(2)-插入排序
- NYOJ-最少步数【搜索|广搜BFS】
- mysql 数据类型
- 最大字段和问题 用动态规划法求解
- KMP算法next的变形
- 递归实现全排列
- 装备选择
- Struts2中配置文件编写简介
- 视频和语音播放(进行中)