插入排序C语言实现(在成绩排名中的应用)
2015-06-02 11:47
274 查看
/* 从小到大排序。 已知一个班级的学生花名册上的成绩name和data,花名册按姓名首字母排序。 求把成绩按从小到大排序后的学生数据。 */ #include <stdio.h> #include <stdlib.h> # define LENGTH 14 void insert_sort(int data[], int length, int map[]); void main() { int i = 0; int data[LENGTH] = {81,42,15,22,65,91,82,95,11,33,77,88,99,22}; // data数组中的数据为某班花名册上学生的分数 //int length = sizeof(data)/sizeof(data[0]); int map[LENGTH] = {0}; // map数组中,索引为某学生排完序后的名次,而值为在花名册(即字符串数组)中的位置。 char* name[LENGTH] = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n"}; printf("排序前:\n"); for(i = 0; i < LENGTH; i++) { printf("姓名:%s 分数:%d\n", name[i], data[i]); } insert_sort(data, LENGTH, map); printf("排序后:\n"); for(i = 0; i < LENGTH; i++) { printf("姓名:%s 分数:%d\n", name[map[i]], data[i]); } system("pause"); } void insert_sort(int data[], int length, int map[]) { int i = 0, j = 0; for(i = 1; i < length; i++) { int temp = data[i]; for(j = i - 1 ; j >= 0 && temp <= data[j]; j--) { data[j + 1] = data[j]; } data[j + 1] = temp; map[j + 1] = i; } }
相关文章推荐
- 插入排序
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言内存对齐实例详解
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- 探讨C语言的那些小秘密之断言
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- C语言泛型编程实例教程
- C语言中使用lex统计文本文件字符数
- 基于C语言fflush()函数的使用详解
- C语言单链队列的表示与实现实例详解
- 关于C语言除0引发的思考
- 深入分析C中不安全的sprintf与strcpy
- Lua教程(四):在Lua中调用C语言、C++的函数
- C语言求幂计算的高效解法
- C语言实现输入一颗二元查找树并将该树转换为它的镜像
- 12个关于C语言的有趣问答