表排序(基于插入排序) C~

来源:互联网 发布:淘宝如何装修店铺教程 编辑:程序博客网 时间:2024/06/17 02:53

用一个数组 记录 数据的 指针(宏观意义上的指针 , 即 地址)

每次排序 都是对 表table 的变换 并不 对数据本身进行变换。



//基于插入排序的表排序(这里是最简单的数排序,其中的数据可以是各种类型数据,只需要根据相应关键字进行排序就行了)

实现:

#include<stdio.h>#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;}

原创粉丝点击