一.直接插入排序(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. python基础(目录)

    1.数据库操作入门 2.网络编程入门 3.编码规范 4.测试

  2. 生产者与消费者(二)---await与 signal

    前面阐述了实现生产者与消费者问题的一种方式:wait() / notify()方法,本文继续阐述多线程的经典问题---生产者与消费者的第二种方式:await() / signal()方法. await ...

  3. C语言带参数的main函数

    C语言带参数的main函数 #include<stdio.h> int main(int argc,char*argv[]) { int i; ;i<argc;i++) printf ...

  4. UVA10142/PC110108Australian Voting

    UVA10142/PC110108Australian Voting 10142 Australian Voting Accepted C++11 0.769 2014-02-11 05:01:20 ...

  5. Binary Tree Inorder Traversal 解题思路 ×

    问题: 非递归中序遍历二叉树 思路: 1.大循环,判断节点是否为空,栈是否为空 2.不为空:点进栈,向左走 3.为空:为空,出栈,读取值,向右走

  6. CSAPP Lab2: Binary Bomb

    著名的CSAPP实验:二进制炸弹 就是通过gdb和反汇编猜测程序意图,共有6关和一个隐藏关卡 只有输入正确的字符串才能过关,否则会程序会bomb终止运行 隐藏关卡需要输入特定字符串方会开启 实验材料下 ...

  7. 及其简易的js 倒计时插件

    网上虽然有很多漂亮的且很实用的倒计时插件,但是,对于需要自己定制的倒计时来讲确实一个不小的障碍.最近我们的英语在线教育产品,在线考试模块需要用到一个计时器,所以顺势开发了一个自己的及时器. http: ...

  8. Ext.Array 方法

    1. Ext.Array.clean(arr); 过滤数组中的空元素 var arr = [1,"",2,"",3]; Ext.clean(arr); // [ ...

  9. 帝国cms7.0跳过[会员注册类型]这步的方法

    改 e/config/config.php 文件,把$ecms_config['member']['changeregisterurl']="ChangeRegister.php" ...

  10. PYTHON开发--面向对象基础二

    一.成员修饰符 共有成员 私有成员, __字段名 - 无法直接访问,只能间接访问 1.     私有成员 1.1  普通方法种的私有成员 class Foo: def __init__(self, n ...