⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 折半插入排序.cpp

📁 实现了循环便利一棵树
💻 CPP
字号:
# include <stdio.h>
# include<malloc.h>
# include<stdlib.h>
# define Maxsize 20
# define ERROR 0
# define OK 1
# define LT(a,b) ((a)<(b))
typedef int KeyType;
typedef char *InfoType;
typedef int Status;
typedef struct  { KeyType key;
                  InfoType otherinfor;
				} RcdType;
typedef struct  { RcdType r[Maxsize+1];
                  int length;
				}SqList;

void InsertSort(SqList &L)
{   	int i,low,high,m,j;
	for(i=2;i<=L.length;i++)
	{	L.r[0]=L.r[i];
	    low=1;	high=i-1;
    	while(low<=high)
		{   m=(low+high)/2;
	    	if(LT(L.r[0].key,L.r[m].key)) high=m-1;
	 	    else low=m+1;
		}
    	for(j=i-1;j>=high+1;j--) L.r[j+1]=L.r[j];
    	L.r[high+1]=L.r[0];
	}
}

Status CreateSqlist(SqList &L)
{	RcdType *rc;
	int i;
	static char str[Maxsize+1][10];
	if(!(rc=(RcdType*)malloc((1+Maxsize)*sizeof(RcdType))))
		return(ERROR);
	rc=L.r;
	L.length=0;
	printf("请输入表中记录个数:");
	scanf("%d",&L.length);
	for(i=0;i<=L.length;i++)
		L.r[i].otherinfor=&str[i][0];
	printf("请输入表中各条记录(输入格式为:整型关键字 字符串型其它信息):\n");
	for(i=1;i<=L.length;i++)
	{	scanf("%d%*c",&L.r[i].key);
		scanf("%s",L.r[i].otherinfor);
	}
	return OK;
}

Status PrintSqlist(SqList L)
{	int i;
	for(i=1;i<=L.length;i++)
	{	printf("%d\t",L.r[i].key);
		printf("%s",L.r[i].otherinfor);
		printf("\n");
	}
	return OK;
}

void main()
{	SqList L;
	CreateSqlist(L);
	InsertSort(L);
	printf("\n输出排序结果:\n"); PrintSqlist(L);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -