新手笔记-简单的排序练习
2014-10-16 19:06
176 查看
根据分数排序和名字字母排序
结果:
这里分数用的是选择排序,字母用的是冒泡排序
注意:使用选择排序时 maxi 要赋值为当前 i ,每次要从下一次开始,对算法要多思考多练习。
#include <string.h> #include <stdio.h> struct person{ char *name; int score; }; int init(struct person *p, char *name, int score) { p->name = name; p->score = score; } int find_max(struct person *p) { int i, j; int max = p->score; for(i=0; i<6; i++) { if((p+i)->score > max) max = (p+i)->score; } return max; } int sort(struct person *p) { int i=0, j=0, max=0, maxi=0, k=0; char *arr; for(i=0; i<6; i++) { maxi=i; max = (p+i)->score; for(j=i+1; j<6; j++) { if((p+j)->score > max) { max = (p+j)->score; maxi = j; } } arr = (p+i)->name; (p+i)->name = (p+maxi)->name; (p+maxi)->name = arr; k = (p+i)->score; (p+i)->score = (p+maxi)->score; (p+maxi)->score = k; printf("sss is %d \n", (p+i)->score); } } int sort1(struct person *p) { int i, j, k, m; char *arr; for(i=0; i<6; i++) { for(j=i+1; j<6; j++) { m = strcmp((p+i)->name , (p+j)->name); if(m > 0) { arr = (p+i)->name; (p+i)->name = (p+j)->name; (p+j)->name = arr; k = (p+i)->score; (p+i)->score = (p+j)->score; (p+j)->score = k; } }
结果:
sss is 98 sss is 88 sss is 79 sss is 67 sss is 65 sss is 60 tom , 98 jams , 88 jim , 79 lucy , 67 tubi , 65 suoluo , 60 jams , 88 jim , 79 lucy , 67 suoluo , 60 tom , 98 tubi , 65 avg is 76 max is 98
这里分数用的是选择排序,字母用的是冒泡排序
注意:使用选择排序时 maxi 要赋值为当前 i ,每次要从下一次开始,对算法要多思考多练习。
相关文章推荐
- scala学习笔记☞二:简单语法练习
- Java 基础一些代码练习笔记( TreeSet 排序)
- 机器学习&数据挖掘笔记_19(PGM练习三:马尔科夫网络在OCR上的简单应用)
- 前端笔试题目练习笔记:统计数组中不同的数字出现的概率并排序
- 经典SQL学习笔记 (一)-简单、限定、模糊、排序
- 简单使用nHibernate,新手练习用。
- emacs 新手笔记(四) —— 使用 dired 完成一些简单的文件和目录操作
- Oracle笔记(四) 简单查询、限定查询、数据的排序
- Oracle笔记(四) 简单查询、限定查询、数据的排序
- java新手笔记7 找最小、最大、排序
- 结构体简单排序练习 题目1014:排名
- NodeJs新手学习笔记练习项目大纲
- NodeJs新手学习笔记练习项目大纲 推荐
- Oracle笔记(四) 简单查询、限定查询、数据的排序
- Oracle笔记(四) 简单查询、限定查询、数据的排序
- 数据结构学习笔记一:简单排序与查询算法
- NodeJs新手学习笔记练习项目大纲
- javascript 实现简单的table排序及table操作练习
- 001 C++笔记——简单程序的练习
- emacs 新手笔记(三) —— 为 emacs 做一点简单的定制