龙空技术网

数据结构排序

程序员小兵 182

前言:

今天姐妹们对“数据结构之八大排序总结”大致比较关怀,小伙伴们都需要知道一些“数据结构之八大排序总结”的相关内容。那么小编在网上汇集了一些关于“数据结构之八大排序总结””的相关资讯,希望小伙伴们能喜欢,姐妹们一起来了解一下吧!

对于文件而言,排序可以理解为:根据文件记录的关键字的值的递增或者递减关系将文件的记录的次序进行重新排列的过程。排序后的文件记录一定是按关键字值有序排列的。例如最开始从磁盘中读出的文件如下图所示。

无序的文件 有序的文件

排序的方法有:直接插入排序、选择排序、冒泡排序、希尔排序、快速排序。今天我们要讲解的是直接插入排序。

直接插入排序

直接插入排序(Straight Insertion Sort)是一种最为简单的排序方法,因此也被称为简单插入排序。

直接插入排序的基本思想是:第i趟排序将序列中的第i+1个元素ki+1插入到一个已经按值有序的子序列(k1,k2,...,ki)中的合适的位置,使得插入后的序列仍然保持按值有序。

#include "stdio.h"insertsort(int a[],int n)				/*直接插入排序*/{    int i,j;    for(i=2;i<=n;i++)    {        a[0] = a[i];					/*将a[i]保存在数组的第0号单元*/        j = i - 1;        while(j>0 && a[0]>a[j])			/*改变判断条件,实现从大到小地排列*/            a[j+1] = a[j--];        a[j+1] = a[0];					/*将元素a[0]插入指定位置*/    }}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]);				/*输出排序后的结果*/    getche();}

运行结果:

标签: #数据结构之八大排序总结