插入排序C语言实现(在成绩排名中的应用)

来源:互联网 发布:局域网络流量监控软件 编辑:程序博客网 时间:2024/04/29 04:01
/*从小到大排序。已知一个班级的学生花名册上的成绩name和data,花名册按姓名首字母排序。求把成绩按从小到大排序后的学生数据。*/#include <stdio.h>#include <stdlib.h># define LENGTH 14void 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;    }}


1 0