087 数据结构之直接插入排序

Posted PHP和我的故事

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了087 数据结构之直接插入排序相关的知识,希望对你有一定的参考价值。

void InsertSort(SeqList R, int length)

{

    int i,j;

for(i=2;i<=length;i++)

if (R[i].key < R[i - 1].key)

{

R[0] = R[i];//R[0]作监测哨兵

for (j = i - 1; R[0].key < R[j].key; j--)

R[j + 1] = R[j];//记录后移

R[j + 1] = R[0];//插入到正确的位置

}

}

一个例子:

#include<iostream>

using namespace std;

 

void insertsort(int a[], int n) /*直接插入排序*/

{

    int i, j;

    for (i = 2; i <= n; i++) {

        a[0] = a[i];

        j = i - 1;

        while (j>0 && a[0]<a[j]) /*改变判断条件,实现从大到小地排列*/

            a[j + 1] = a[j--];

        a[j + 1] = a[0]; /*将元素a[0]插入指定位置*/

    }

}

 

int main()

{

    int i, a[11] = { -111,2,5,6,3,7,8,0,9,12,1 }; /*初始化序列,a[0]可任意置数*/

    printf("The orginal data array is\n");

    for (i = 1; i <= 10; i++)                         /*显示原序列之中的元素*/

        printf("%d ", a[i]);

    insertsort(a, 10);                          /*插入排序*/

    printf("\nThe result of insertion sorting for the array is\n");

    for (i = 1; i <= 10; i++)

        printf("%d ", a[i]);                    /*输出排序后的结果*/

}


以上是关于087 数据结构之直接插入排序的主要内容,如果未能解决你的问题,请参考以下文章

数据结构(14)---排序之插入排序(直接插入排序, 希尔排序)和选择排序(直接选择排序, 堆排序)

java排序之插入排序(直接插入排序和希尔排序)

排序算法之插入排序(直接插入排序折半插入排序希尔排序)

数据结构之排序 --- 插入排序

数据结构排序系列之插入排序

数据结构与算法之排序算法:插入排序