一.直接插入排序(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. IE str.trim() 不兼容问题解决方法

    本文实例分析了javascript在IE下trim函数无法使用的解决方法: 首先,javascript的trim函数在firefox或者chrome下面使用没有问题: 1 2 3 4 5 <sc ...

  2. Java基础--Java内存管理与垃圾回收

      Java自动内存管理 在讲解内存管理之前,首先需要了解对象和对象引用的区别 对象是类的一个实例,以人这个类为例,Person是我们定义的一个类 public class Person{} publ ...

  3. lower_bound()函数

    头文件 # include<algorithm> 函数简介 lower_bound()返回一个 iterator 它指向在[first,last)标记的有序序列中可以插入value,而不会 ...

  4. 输出第N个素数

    输出第N个素数 public class FindNthPrime { public static void main(String[] args){ int N = Integer.parseInt ...

  5. 冒泡排序(C++)

    冒泡排序(C++) 冒泡排序(C++): 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换, ...

  6. ENC28J60 + M430G2553,用uip搭建http服务器,解决“在XP系统下可以访问,在Win7下不能访问”的问题

    近日,用ENC28J60,在M430G2553上搭建一个简单的HTTP服务器,结果发现在XP系统下可以访问,在Win7下不能访问,非常奇葩的问题. 通过抓包,如下图,计算机(IP地址为192.168. ...

  7. jquery之分页插件smartpaginator

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

  8. Windows phone 之自定义控件(补充)

    <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x= ...

  9. LICAppInfo

    [Common] Enabled=true All=true [AppList] #AppName                       #Enabled            #Validit ...

  10. css3 iphone开关 移动端开关、按钮、input

    css3  iphone开关  移动端开关.按钮.input <!DOCTYPE html> <html> <head> <meta charset=&quo ...