一.直接插入排序(Straight Insertion Sort)

排序的过程如下:给定无需序列:(3,6,9,7,1,8,2,4)

① 3,6,9,7,1,8,2,4 (将6插入到有序序列3中)

② 3,6,9,7,1,8,2,4 (将9插入到有序序列3,6中)

③ 3,6,9,7,1,8,2,4 (将7插入到有序序列3,6,9中)

④ 3,6,7,9,1,8,2,4 (将1插入到有序序列3,6,7,9中)

⑤ 1,3,6,7,9,8,2,4 (将8插入到有序序列1,3,6,7,9中)

⑥ 1,3,6,7,8,9,2,4 (将2插入到有序序列1,3,6,7,8,9中)

⑦ 1,2,3,6,7,8,9,4 (将4插入到有序序列1,2,3,6,7,8,9中)

⑧ 1,2,3,4,6,7,8,9  (排序成功)

#include<stdio.h>
#define M 100
int R[M]; void insertSort(int n)
{
int i,j;
for (i=;i<=n;i++)
{
if (R[i]<R[i-])
{
R[]=R[i];
j=i-;
do
{
R[j+]=R[j];
j--; }
while (R[]<R[j]);
}
R[j+]=R[];
}
}
int main()
{
int i,n; scanf("%d",&n);
for (i=;i<=n;i++)
{
scanf("%d",&R[i]);
} printf("before sort numbers \n"); for (i=;i<=n;i++)
{
printf("%4d",R[i]);
} insertSort(n);/*调用直接插入了排序*/
printf("\n after sort numbers \n");
for (i=;i<=n;i++)
{
printf("%4d",R[i]);
} }
#include<stdio.h>
#define M 100
int R[M]; void insertSort(int n)
{
int i,j;
for (i=;i<=n;i++)
{ if(R[i]<R[i-]) { R[]=R[i]; for(j=i-;R[]<R[j];--j) R[j+]=R[j]; R[j+]=R[]; } }
}
int main()
{
int i,n; scanf("%d",&n);
for (i=;i<=n;i++)
{
scanf("%d",&R[i]);
} printf("before sort numbers \n"); for (i=;i<=n;i++)
{
printf("%4d",R[i]);
} insertSort(n);/*调用直接插入了排序*/
printf("\n after sort numbers \n");
for (i=;i<=n;i++)
{
printf("%4d",R[i]);
} }

二,直接插入排序( straight insertion sort )是一种最简单的排序方法。它的基本操作是将一个记录插入到一个长度为 m (假设)的有序表中,使之仍保持有序,从而得到一个新的长度为 m + 1 的有序表。

此算法外循环 n-1 次,在一般情况下内循环平均比较次数的数量级为O(n) ,所以算法总时间复杂度为O(n2) 。

插入排序的过程中比较的过程就是一个查找的过程,为了更加快速的找到“合适的位置”,可以使用高效些的查找算法,例如和折半查找结合,就形成了  折半插入排序。

排序之直接插入排序(Straight Insertion Sort)的更多相关文章

  1. 插入排序—直接插入排序(Straight Insertion Sort)

    基本思想: 将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表.即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插插入到已入,直至整个序列有序为止. 要点: ...

  2. 直接插入排序(Straight Insertion Sort)

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  3. 【DS】排序算法之插入排序(Insertion Sort)

    一.算法思想 一般来说,插入排序都采用in-place在数组上实现.具体算法描述如下:1)从第一个元素开始,该元素可以认为已经被排序2)取出下一个元素,在已经排序的元素序列中从后向前扫描3)如果该元素 ...

  4. 直接插入排序(Straight Insertion Sort)

    直接插入排序(Straight Insertion Sort)的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的.记录数增1的有序表. /* 对顺序表L作直接插入排序 */ void ...

  5. ​直接插入排序(Straight Insertion Sort)

    1.定义 直接插入排序(Straight Insertion Sort)的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的.记录数增1的有序表. 插入排序(Insertion Sort ...

  6. 直接插入排序(Straight Insertion Sort)的C语言实现

    原创文章,转载请注明来自钢铁侠Mac博客http://www.cnblogs.com/gangtiexia   直接插入排序(Straight Insertion Sort)的基本思想是将新记录插入到 ...

  7. 【排序基础】5、插入排序法 - Insertion Sort

    插入排序法 - Insertion Sort 文章目录 插入排序法 - Insertion Sort 插入排序设计思想 插入排序代码实现 操作:插入排序与选择排序的比较 简单记录-bobo老师的玩转算 ...

  8. 《算法4》2.1 - 插入排序算法(Insertion Sort), Python实现

    排序算法列表电梯: 选择排序算法:详见 Selection Sort 插入排序算法(Insertion Sort):非常适用于小数组和部分排序好的数组,是应用比较多的算法.详见本文 插入排序算法的语言 ...

  9. 【算法】插入排序(Insertion Sort)

    (PS:内容参考MIT算法导论) 插入排序(Insertion Sort): 适用于数目较少的元素排序 伪代码(Pseudocode): 例子(Example): 符号(notation): 时间复杂 ...

随机推荐

  1. MSSQL存储过程(好久的笔记,翻出来怀念下)

    语法结构: create proc 名称 参数列表 as 代码段 调用: exec 存储过程名称 参数列表 要点: .可以使用output修饰参数 .可以使用默认值,注意需要将最后的参数设置成默认值 ...

  2. 在调用Qt库来实现功能过程中的一些总结

    1.对于QTabWidget中tab名字的变化.当其中只有一个&时,Qt Assistant中给出的解释是:If the tab's label contains an ampersand, ...

  3. DFS的基础训练清单

    HDU 1010  (AC) HDU 1015    (AC) HDU 1016     (AC) HDU 1172   (AC) HDU 1312   (AC) POJ 2362  (AC,1011 ...

  4. Cocos2dx边学边总结——开篇(一)

    Cocos2dx是一个很好的开源跨平台2d游戏引擎,我们都知道他底层是基于OpenGl ES的,OpenGl 是跨平台的. 正是得益于这点 Cocos2dx的显示部分可以很好的跨平台运作,笔者认为 未 ...

  5. jquery之分页插件smartpaginator

    今天推荐一个分页工具条插件:Smart Paginator,这个插件用途还是很广的,而且可定制性相当不错,目前内置三种颜色,有需要的话,可以自己改css定制颜色 1.如何使用Smart Paginat ...

  6. Jquery Mobile下设置radio控件选中

    问题: .html文件头部引入了: <script src="js/jquery.js"></script> <script src="js ...

  7. Chain of Responsibility

    比较经典的距离是请假申请(<大话设计模式>中的例子),请假是要逐级判断,只有级别到了才有权利审批,从构造上面其实"装饰"模式和"职责链"之间有相通的 ...

  8. mvc Model元数据【学习笔记】

    页面中Html.Editorfor(model=>model.fieldname)这些方法,都是通过Model的元数据来生成html的,我们如果想控制最终生成的html,可以通过修改元数据来实现 ...

  9. 转:实用 .htaccess 用法大全

    原文来自于:http://www.techug.com/htaccess-snippets 这里收集的是各种实用的 .htaccess 代码片段,你能想到的用法几乎全在这里. 免责声明: 虽然将这些代 ...

  10. uploadify 自定义按钮样式

    uploadify是一款不错的JQUERY上传插件,但是FLASH按钮的外挂往往跟我们网页的设计不太搭配.一开始我还试图反编译uploadify.swf来修改其外观,结果发现反编译为FLA后里面没有任 ...