文字描述:

将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表

示意图:

算法分析:

时间复杂度为n*n,辅助存储为1,是稳定的排序方法。

代码实现:

 #include <stdio.h>
#include <stdlib.h> #define EQ(a, b) ((a) == (b))
#define LT(a, b) ((a) < (b))
#define LQ(a, b) ((a) <= (b)) #define MAXSIZE 20
typedef int KeyType;
typedef int InfoType;
typedef struct{
KeyType key;
InfoType otherinfo;
}RedType; typedef struct{
RedType r[MAXSIZE+];
int length;
}SqList; void InsertSord(SqList *L){
int i = , j = ;
for(i=; i<=L->length; i++){
if(LT(L->r[i].key, L->r[i-].key)){
L->r[] = L->r[i];
L->r[i] = L->r[i-];
for(j=i-; LT(L->r[].key, L->r[j].key); --j){
L->r[j+] = L->r[j];
}
L->r[j+] = L->r[];
}
}
} void PrintList(SqList L){
int i = ;
printf("len:%d; data:", L.length);
for(i=; i<=L.length; i++){
printf("%d ", L.r[i].key);
}
printf("\n");
return ;
} int main(int argc, char *argv[])
{
if(argc < ){
return -;
}
SqList L;
int i = ;
for(i=; i<argc; i++){
if(i>MAXSIZE)
break;
L.r[i].key = atoi(argv[i]);
}
L.length = (i-); InsertSord(&L);
PrintList(L);
return ;
}

直接插入排序

运行:

~$ ./a.out 3 5 7 3 1 9 6 4
len:8; data:1 3 3 4 5 6 7 9

最新文章

  1. jQuery源码 Ajax模块分析
  2. python file
  3. Maven下java.lang.NoClassDefFoundError
  4. django - settings
  5. 【转】Phonegap离线调用SQLite数据库文件
  6. Anaconda packages list
  7. openstack 虚拟机流量
  8. OVERLAY代码重入
  9. JVM垃圾收集算法(标记-清除、复制、标记-整理)
  10. android采用SurfaceView实现文字滚动效果
  11. IBM x3850 RAID5数据恢复过程
  12. oracle中查看所有表和字段以及表注释字段注释
  13. linux 强制删除yum安装的php7.2
  14. BZOJ3998 TJOI2015弦论(后缀数组+二分答案)
  15. Java全栈程序员之01:做个Linux下的程序猿
  16. [django]django model的查询和更新
  17. NC 6系初始化EJB
  18. elasticSearch6源码分析(10)SettingsModule
  19. 新手学Linux:在VMware14中安装CentOS7详细教程
  20. Python第二天 (数据类型,变量 )

热门文章

  1. Node入门教程(6)第五章:node 模块化(上)模块化演进
  2. Android开发(十七)——关闭中间activity
  3. 【九天教您南方cass 9.1】01 安装Cad和Cass9.1
  4. Java知多少(104)网络编程之统一资源定位符URL
  5. Sword redis存取二进制数据
  6. one-to-all及all-to-all网络通信模式
  7. 嵌入式开发之hi3519---i2c MDIO PHY uboot phy调试总结
  8. Linux查找指令(阮一峰)
  9. [UI] 03 - Bootstrap: component
  10. Linux学习之---Xshell