2016年7月27日18:13:11假设用户数据为:[22,6,17,8]直接插入排序的思想是:将待排序元素分为已排序子集和未排序子集,依次从未排序子集中取出一个元素插入到已排序子集的合适的位置,使得已排序的子集任然为有序子集,当未排序的 子集为空时,排序结束初始时:[22,|6,17,8] 将t = 6;第一趟排序:[22,|22,17,8];将6与22比较->发现6<22,将22向后移动;将6插入到第一个位置[6,22,|17,8]状态:[6,22,|17,8] 将t = 17;第二趟排序:[6,22,|22,8];将17与22比较->发现17<22,将22向后移动;在将17与6比较->发现17>6;将17插入到6的后面:[6,17,22|,8]状态:[6,17,22|,8] 将t = 8;第三趟排序:[6,17,22|,22]将8与22比较->发现8<22,将22向后移动;将8与17比较->发现8<17,将17向后移动[6,17,17|,22]将8与6比较->发现8>6,将元素插入到6的后面[6,8,17,22|]此时发现未排序的子集为空,算法结束;
#include<stdio.h>
#include<stdlib.h>
#define random(x)(rand()%x)
#define MAXISIZE 100//顺序表的结构体类型
typedef struct
{int data[MAXISIZE];int length;
}SeqList;//函数前置声明
void insertSort(SeqList * S);
void initSeqList(SeqList * S);
void setSeqList(SeqList * S,int len);
void traverseSeqList(SeqList * S);
void traverseSeqList1(SeqList * S);//给顺序表中元素进行1-1000整数的随机赋值
void setSeqList1(SeqList * S)
{int i;for(i = 0;i<MAXISIZE;i++){S->data[i] = random(1000);}S->length = MAXISIZE;return;
}//遍历顺序表中的元素
void traverseSeqList(SeqList * S)
{int i;for( i = 0;i<S->length;i++){printf("%-6d",S->data[i]);}printf("\n");return;
}//给顺序表中的元素进行赋值
void setSeqList(SeqList * S,int len)
{int i;for(i = 0;i<len;i++){printf("请输入第%d个元素:",i+1);scanf("%d",&S->data[i]);}S->length = i;return;
}//顺序表的初始化
void initSeqList(SeqList * S)
{S->length = 0;
}//直接插入排序
void insertSort(SeqList * S)
{int i;int j;int tempVal;for( i = 1;i<S->length;i++){tempVal = S->data[i];for( j = i-1;j>=0&&tempVal<S->data[j];j--){/*if(tempVal<S->data[tempVal-1])S->data[tempVal] = S->data[tempVal-1];if(tempVal>S->data[tempVal-1])if(tempVal<S->data[tempVal-2])S->data[tempVal-1] = S->data[tempVal-2];......if(tempVal<S->data[0])S->data[1] = S->data[0];    */if(tempVal<S->data[j])S->data[j+1] = S->data[j];      }S->data[j+1] = tempVal;}return ;
}int main(void)
{int len;SeqList S;initSeqList(&S);/*printf("请输入您需要排序的数据的个数:len=");scanf("%d",&len);*/setSeqList1(&S);printf("您所输入的数据为:\n");traverseSeqList(&S);insertSort(&S);printf("排序后的数据为:\n");traverseSeqList(&S);return 0;
}

直接插入排序顺序结构相关推荐

  1. 折半插入排序顺序结构

    2016年7月28日08:21:18折半插入排序:折半插入排序算法是对直接插入排序算法的改进,它的主要改进在于在已经有序的子集中确定待排序元素的位置找到要插入的位置后,将相应的元素插入到该位置即可;假 ...

  2. 顺序结构,判断结构 if,switch

    1:顺序结构:从上往下执行程序代码,为顺序结构 ---------------------------------------------------------------------- 2:判断结 ...

  3. Java程序流程控制(顺序结构、分支结构、循环结构、if-else、switch-case、for、while、do-while、break、continue、return)

    流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块. 其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:         顺序结构         ...

  4. Python控制流:顺序结构、分支结构、循环结构+for、if ... else、while、if... elif...elif..else、if

    Python控制流:顺序结构.分支结构.循环结构+for.if ... else.while.if... elif...elif..else.if 在计算机科学中,控制流(或控制流)是命令式程序中单个 ...

  5. python流程图基本元素-python | 控制流语句-顺序结构与分支结构

    1 程序流程图 程序流程图是指用一系列图形.流程线和文字说明描述程序的基本操作和控制流程,它是程序分析和过程描述的最基本方式.流程图基本元素共有7种,其中,连接点将多个流程图连接在一起,常用于将较大的 ...

  6. c语言顺序结构程序设计第4章答案,第4章顺序结构程序设计习题及答案.doc

    第4章顺序结构程序设计习题及答案 第4章 顺序结构程序设计 4-1 C语言的控制语句有哪些? 答:C语言有九条控制语句: 条件语句:if-else语句. 开关语句:switch语句. 当循环语句:wh ...

  7. python入门之控制结构顺序与选择结构_Python 入门之控制结构 - 顺序与选择结构——第1关:顺序结构...

    Python 入门之控制结构 - 顺序与选择结构--第1关:顺序结构 任务描述 程序最基本的结构就是顺序结构,顺序结构就是程序按照语句顺序,从上到下依次执行各条语句. 本关要求学习者理解顺序结构,并对 ...

  8. 栈之顺序结构和链式结构

    栈的顺序结构实现 typedef int Position; struct SNode {ElementType *Data; /* 存储元素的数组 */Position Top; /* 栈顶指针 * ...

  9. c语言 判断一个图是否全连通_C语言:程序运行流程图与顺序结构语句

    程序运行流程图 流程图是描述问题处理步骤的一种常用图形工具,它是由一些图框和流程线组成的.流程图描述问题的处理步骤,形象直观,便于阅读.画流程图时必须按照功能选用相应的流程图符号,常用的流程图符号如下 ...

最新文章

  1. PHP: chr和pack、unpack那些事
  2. 【C++ STL】Map库使用方法
  3. 20个优秀的移动(iPhone)网站设计案例
  4. Yarn管理界面中Queue:root和Queue:default的区别
  5. VBA MultiPage 循环多页控件
  6. Linux vi 行尾 ctrl,linux中vi使用技巧常用技巧和高级替换
  7. ftp扫描工具,6款最好用的ftp扫描工具
  8. 经传主力控盘指标公式 清晰的主力控盘程度详解 通达信选股指标
  9. bootstrap 二级下拉菜单
  10. 华为服务器bios中修改磁盘格式,华为服务器设置bios
  11. svg齿轮动画js特效
  12. HTML中的JavaScript——<script>
  13. 数据可视化之旅:常用图表对比
  14. 海明码java编程,海明码校验程序设计
  15. MyBatisPlus快速入门
  16. MATLAB图片导出PDF格式,并且控制图片白色边框大小——非代码方法
  17. linux查看电脑硬件信息,怎么在linux下查看电脑硬件设备属性和各种信息
  18. linux安装elasticsearch-head (es可视化界面)
  19. eclipse Java project 项目旁边有红色感叹号
  20. 裴健加入京东是“数据AI”之战,也是新零售的内核之战

热门文章

  1. 手机原来也能把照片制作成视频?1分钟包你学会,发朋友圈超有范
  2. 图解数据在网络中的传输过程
  3. 干货|机器学习-稀疏矩阵的处理
  4. MAC 升级monterey 系统后无法启动Parallels Desktop
  5. 苹果退款48小时审核结果_金苹果花园车辆审核结果20191102
  6. AIRPLAY镜像音频数据的处理
  7. Zookeeper 报错 zookeeper Invalid config, exiting abnormally
  8. C#实现时间戳与标准时间的互转学习通http://www.bdgxy.com/
  9. 神威超级计算机配置,神威太湖轻型超级计算机配置和性能列表
  10. Aspose.Cells Excel删除行