本文共 714 字,大约阅读时间需要 2 分钟。
用一个数组 记录 数据的 指针(宏观意义上的指针 , 即 地址)
每次排序 都是对 表table 的变换 并不 对数据本身进行变换。
//基于插入排序的表排序(这里是最简单的数排序,其中的数据可以是各种类型数据,只需要根据相应关键字进行排序就行了)
实现:
#include#define MAX 10int table[MAX];int data[MAX];void insert_sort(int a[], int n) { int tmp, i, j, k; for(i = 1; i < n; i++){ tmp = a[table[i]]; k = i; for(j = i; a[table[j-1]] > tmp && j > 0;j-- ){ table[j] = table[j-1]; } table[j] = k; } }int main() { int n; int kcase = 0; while(scanf("%d",&n) == 1 && n != 0){ for(int i = 0; i < n; i++ ){ scanf("%d",&data[i]); table[i] = i; } insert_sort(data, n);// 排序 printf("Case %d:", ++kcase); for(int i = 0; i < n; i++ ){ printf("%d ",data[table[i]]); } printf("\n"); } return 0; }
转载地址:http://caimi.baihongyu.com/