离散化
离散化
例题
给定n (n<=100000)个正整数Ai组成的数列(Ai<=10^9, 1<=i<=n),希望对该数列从小到大排序,如果采用冒泡排序算法,请计算需要进行的交换次数。
Sample Input 4 321 4321 21 10
Sample Output 5
概念
数据的离散化
应用背景:
离散化是一种常用的技巧,有时数据范围太大,自身无法作为数组的下标保存对应的属性,当数据只与它们之间的相对大小有关,而与具体值无关时,则可以进行离散化。
只表示模糊的相对大小

处理得到的代码
再看代码: for(i=1;i<=N;i++) b[a[i].order]=i;
重复元素处理优化
离散化示例 - 思考:如果有重复元素,如何处理?
输入数据: 4321 321 321 21 21
期望输出: 3 2 2 1 1
sort(a+1, a+1+N, cmp); |