★实验任务 给定一个 1~N 的排列P ,即1到N中的每个数在P中都出现一次。

该博客探讨了冒泡排序过程中,对于1到N的每个数字,其在排序过程中达到的最左和最右位置下标的差的绝对值。通过一个具体的例子展示了冒泡排序的过程,并给出了输入输出示例,帮助理解问题的解决方案。
摘要由CSDN通过智能技术生成

现在要对排列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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值