#include <cstdio>
#include <cmath>
#include <bits/stdc++.h>
using namespace std;
int a[50];
void work(int p,int r){ //二分快排 以最后一个数为基准
if(p<r){
int i=p-1,j,temp;
for(j=p;j<r;j++){
if(a[j]>=a[r]){
i++;
cout<<"i="<<i<<" j="<<j<<" a["<<i<<"]="<<a[i]<<" a["<<j<<"]="<<a[j]<<endl;
temp=a[i];a[i]=a[j];a[j]=temp;//
}
}
cout<<"r="<<r<<" i+1="<<i+1<<endl;
cout<<"p="<<p<<" i="<<i<<" r="<<r<<endl;
temp=a[i+1];
a[i+1]=a[r];
a[r]=temp;
cout<<"i+1="<<a[i+1]<<endl;
for(int k=p;k<=r;k++)
{
cout<<a[k]<<" ";
}
cout<<endl;
work(p,i);
work(i+2,r);
}
}
int main(){
int n,i;
int sum=0;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
work(0,n-1);
for(int i=0;i<=n-1;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
for(i=0;i<n-1;i++)
sum+=abs(a[i+1]-a[i]);//abs stdlib.h
printf("%d\n",sum);
return 0;
}
//输入:10 23 435 12 345 3123 43 456 12 32 -100
//输出
//答案:3223
/*
10 23 435 12 345 3123 43 456 12 32 -100
i=0 j=0 a[0]=23 a[0]=23
i=1 j=1 a[1]=435 a[1]=435
i=2 j=2 a[2]=12 a[2]=12
i=3 j=3 a[3]=345 a[3]=345
i=4 j=4 a[4]=3123 a[4]=3123
i=5 j=5 a[5]=43 a[5]=43
i=6 j=6 a[6]=456 a[6]=456
i=7 j=7 a[7]=12 a[7]=12
i=8 j=8 a[8]=32 a[8]=32
r=9 i+1=9
p=0 i=8 r=9
i+1=-100
23 435 12 345 3123 43 456 12 32 -100
i=0 j=1 a[0]=23 a[1]=435
i=1 j=3 a[1]=23 a[3]=345
i=2 j=4 a[2]=12 a[4]=3123
i=3 j=5 a[3]=23 a[5]=43
i=4 j=6 a[4]=12 a[6]=456
r=8 i+1=5
p=0 i=4 r=8
i+1=32
435 345 3123 43 456 32 12 12 23
i=0 j=2 a[0]=435 a[2]=3123
r=4 i+1=1
p=0 i=0 r=4
i+1=456
3123 456 435 43 345
i=2 j=2 a[2]=435 a[2]=435
r=4 i+1=3
p=2 i=2 r=4
i+1=345
435 345 43
r=8 i+1=6
p=6 i=5 r=8
i+1=23
23 12 12
i=7 j=7 a[7]=12 a[7]=12
r=8 i+1=8
p=7 i=7 r=8
i+1=12
12 12
3123 456 435 345 43 32 23 12 12 -100
3223
--------------------------------
Process exited after 4.555 seconds with return value 0
请按任意键继续. . .
*/
阅读程序 普及篇(1-8题)
阅读程序 普及篇(9-14题)
阅读程序 普及篇 11、NOIP2004提高组 阅读程序写结果 4.2
阅读程序 普及篇 11、NOIP2004提高组 阅读程序写结果 4.2_dllglvzhenfeng的博客-CSDN博客