按姓名查找学生排名c语言,实验五 按姓名查找学生

一,实验目的

掌握常用的排序方法,并掌握用c语言或C++实现排序的方法;

深刻理解排序的定义和各种排序方法的特点,并能加以灵活应用;

了解各种方法的排序过程及其依据的原则,并掌握各种排序方法的时间复杂度的分析方法。 二,实验内容

给出n个学生的考试成绩表,每条信息由姓名和分数组成,试设计一个算法:

按分数高低次序,打印出每个学生在考试中获得的名次,分数相同的为同一名次;

按名次列出每个学生的姓名与分数。

 用直接插入排序输出名次

 用快速排序输出名次

 用选择排序输出名次 三,实验代码

#include

#include

typedef int KeyType;

typedef int InfoType;

typedef struct

{

KeyType key;

InfoType otherinfo;

}RedType;

#define MAXSIZE 20

typedef struct

{

RedType r[MAXSIZE+1];

int length;

}SqList;

void print(SqList L)

{

int i;

for(i = 1; i <= L.length; i++)

printf("(%d, %d) ", L.r[i].key, L.r[i].otherinfo);

printf("\n\n");

}

void InsertSort(SqList *L)

{

int i, j;

for( i = 2; i <= (*L).length; ++i)

if((*L).r[i].key < (*L).r[i-1].key)

{

(*L).r[0] = (*L).r[i];

for(j = i-1; (*L).r[0].key < (*L).r[j].key; --j)

(*L).r[j+1]=(*L).r[j];

(*L).r[j+1] = (*L).r[0];

print(*L);

}

}

int main()

{

RedType d[N] = {

{ 49, 1}, { 38, 2}, { 65, 3}, { 97, 4},

{ 76, 5}, { 13, 6}, { 27, 7}, { 49, 8}

};

SqList L;

int i;

int dt[T] = { 5, 3, 1};

for(i = 0; i < N; i++)

L.r[i+1]=d[i];

L.length = N;

printf("qian:\n");

print(L);

printf("zhong\n");

InsertSort(&L);

printf("hou:\n");

print(L);

return 0;

}

#include"stdio.h"

typedef int KeyType;

typedef int InfoType;

typedef struct

{

KeyType key;

InfoType otherinfo;

}RedType;

#define MAXSIZE 20

typedef struct

{

RedType r[MAXSIZE+1];

int length;

}SqList;

void print(SqList L)

{

int i;

for(i = 1; i <= L.length; i++)

printf("(%d, %d) ", L.r[i].key, L.r[i].otherinfo);

printf("\n\n");

}

int Partition(SqList *L,int low,int high)

{

RedType t;

KeyType pivotkey;

pivotkey=(*L).r[low].key;

while(low

{

while(low=pivotkey)

--high;

t=(*L).r[low];

(*L).r[low]=(*L).r[high];

(*L).r[high]=t;

while(low

++low;

t=(*L).r[low];

(*L).r[low]=(*L).r[high];

(*L).r[high]=t;

}

return low;

}

#define N 8

int main()

{

RedType d[N] = {

{ 49, 1}, { 38, 2}, { 65, 3}, { 97, 4},

{ 76, 5}, { 13,6}, { 27, 7}, { 49, 8}

};

SqList l;

int i;

for(i=0;i

l.r[i+1]=d[i];

l.length = N;

printf("qian:\n");

print(l);

QuickSort(&l);

printf("hou:\n");

print(l);

return 0;

}

#include

#include

#include

#include

typedef struct

{

int key;

int otherinfo;

}RedType;

#define MAXSIZE 30

typedef struct

{

RedType r[MAXSIZE+1];

int length;

}SqList;

void print(SqList L)

{

int i;

for(i = 1; i <= L.length; i++)

printf("(%d, %d) ", L.r[i].key, L.r[i].otherinfo);

printf("\n\n");

}

int SelectMinKey(SqList L,int i)

{

int min;

int j,k;

k=i;

min=L.r[i].key;

for(j=i+1;j<=L.length;j++)

if(L.r[j].key

{

k=j;

min=L.r[j].key;

}

return k;

}

void SelectSort(SqList *L)

{

int i,j;

RedType t;

for(i=1;i

{

j=SelectMinKey(*L,i);

if(i!=j)

{

t=(*L).r[i];

(*L).r[i]=(*L).r[j];

(*L).r[j]=t;

}

}

}

#define N 8

int main()

{

RedType d[N] = {

{ 49, 1}, { 38, 2}, { 65, 3}, { 97, 4},

{ 76, 5}, { 13, 6}, { 27, 7}, { 49, 8}

};

SqList l;

int i;

for(i=0;i

l.r[i+1]=d[i];

l.length=N;

printf("qian:\n");

print(l);

SelectSort(&l);

printf("hou:\n");

print(l);

return 0;

}

1450327189172.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值