Skip to content

1707004714陈琳琳,排序 #95

@CuteOrangeCat

Description

@CuteOrangeCat

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define m 100
typedef int keytype;
typedef struct{
int number;//卡号
char name[10];//姓名
char depart[10];//系名
char class_num;//班号
}student;
typedef struct{
student r[m+5];
int length;
}table;
void creat(table *tab)
{
printf("输入总个数:");
scanf("%d",&tab->length);
printf("\n输入每个成员信息:\n");
for(int i=1;i<=tab->length;i++)
{
printf("姓名:");
scanf("%s",&tab->r[i].name);
printf("卡号:");
scanf("%d",&tab->r[i].number);
printf("班号:");
scanf("%s",&tab->r[i].class_num);
printf("系名:");
scanf("%s",&tab->r[i].depart);
printf("\n");
}
}
//直接排序算法
void insertsort(table *tab)
{
int i,j;
for(i=2;i<=tab->length;i++)
{
j=i-1;
tab->r[0]=tab->r[i];
while(tab->r[0].numberr[j].number)
{
tab->r[j+1]=tab->r[j];
j--;
}
tab->r[j+1]=tab->r[0];
}
}
//二分法插入排序算法
void binarysort(table *tab)
{
int i,j,left,right,mid;
for(i=2;i<=tab->length;i++)
{
tab->r[0]=tab->r[i];
left=1;right=i-1;
while(left<=right)
{
mid=(left+right)/2;
if(tab->r[i].numberr[mid].number)
right=mid-1;
else
left=mid+1;
}
for(j=i-1;j>=left;j--)
tab->r[j+1]=tab->r[j];
tab->r[left]=tab->r[0];
}
}
//快速排序
void quicksort(table *tab,int left,int right)
{
int i,j;
if(left<right)
{
i=left;j=right;
tab->r[0]=tab->r[i];
do{
while(tab->r[j].number>tab->r[0].number&&i<j) j--;
if(i<j){
tab->r[i]=tab->r[j];i++;
}
while(tab->r[i].numberr[0].number&&i<j) i++;
if(i<j){
tab->r[j]=tab->r[i];j--;
}
}while(i!=j);
tab->r[i]=tab->r[0];
quicksort(tab,left,i-1);
quicksort(tab,i+1,right);
}
}
void output(student x)
{
printf("姓名:%s 卡号:%d 班号:%s 系名:%s\n",x.name,x.number,x.class_num,x.depart);
}
void outputall(table *tab)
{
for(int i=1;i<=tab->length;i++)
{
printf("姓名:%s 卡号:%d 班号:%s 系名:%s \n",tab->r[i].name,tab->r[i].number,tab->r[i].class_num,tab->r[i].depart);
}
}
void search(table *tab)
{
char s[20];
printf("输入要查找的系名:\n");
scanf("%s",s);
int flag=0;
for(int i=1;i<=tab->length;i++)
{
if(!strcmp(s,tab->r[i].major)){
output(tab->r[i]);flag++;
}
}
if(!flag) printf("不存在\n");
}
void role()
{
printf("1:创建\t2:输出\t3:查找\t0:结束\n");
}
int main()
{
table tab;
int cmd;
role();
while(scanf("%d",&cmd)!=EOF)
{
switch(cmd)
{
case 1:creat(&tab);
case 4:quicksort(&tab,1,tab.length);break;
case 2:outputall(&tab);break;
case 3:search(&tab);break;
case 0:printf("退出成功");return 0;
default:printf("请重新输入!");
}
role();
}
return 0;
}
vp _ut 2o53 m25x4jfkhv
m5xmwm f 6tigwsib 8e03

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions