一道考题,映射思想解决

南嵌的考题。根据数组单元内的数字排序数组,获得数组(序号)下标的排列顺序。
  eg. struct Array{
                int weight;
                }
      struct Array  sortme[500] ;
      /初始化sortme[500]/
      根据weight的大小排序数组的结构体单元。

**/


#include <stdio.h>

int main()
{
    int  a[5]={4,7,9,2,1};
    int  s[5]={1,2,3,4,5};
    int i, j;

    for(j=1;j<5;j++)
    {
        i=j-1;
        int tmp=s[j];
        while(i>=0 && a[s[i]] > a[tmp])
        {
            s[i+1]=s[i];
            i--;
        }
        s[i+1]=tmp;
    }

    for(i=0;i<5;i++)
    {
        printf("(%d)%d,",s[i],a[s[i]]);
    }
    putchar((int)' ');
}

排序用的是插入排序,算法的最坏情况是O(n^2)。

原文地址:https://www.cnblogs.com/ppazhang/p/3579507.html