实现方式:
原数组复制到另一个数组并排序,对排序后数组二分得到key值。
模板:
///数的hash
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
using namespace std;
#define maxn 100005
int a[maxn];
int b[maxn];
int key[maxn];
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
b[i]=a[i];
}
for(int i=0;i<n;i++){
key[i]=lower_bound(b,b+n,a[i])-b;
}
for(int i=0;i<n;i++)
printf("%d\n",key[i]);
}