现在要对排列P进行冒泡排序,代码如下:
for (int i = 1; i <= N; ++i)
for (int j = N, t; j > i; ‐‐j)
if (P[j ‐ 1] > P[j])
t = P[j], P[j] = P[j ‐ 1], P[j ‐ 1] = t;
在排序过程中,数字的位置可能会发生变化。对于1~N的每个数字,你需要输出过程中达到的最左位置下标和最右位置下标的差的绝对值。
80%的数据:N<=1000
100%的数据:N<=100000
输入示例
4
3 2 1 4
输出示例
2 1 2 0
Hint
样例冒泡排序过程:
swap 2 1: 3 2 1 4 > 3 1 2 4
swap 3 1: 3 1 2 4 > 1 3 2 4
swap 3 2: 1 3 2 4 > 1 2 3 4
#include<stdio.h>
#include<stdlib.h>
int cmp(const void *a, const void *b){
return *(int *)a - *(int *)b;
}
int min(int a, int b){
return a<b?a:b;
}
int Find(int a[], int x,int N){
int i;
for( i = 0;i<N;i++){
if(a[i]==x)
return i;
}
}
int main(void){
int N,i,j;
scanf("%d",&N);
int a