您的位置:首页 > 编程语言 > C语言/C++

插入排序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;
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 插入排序