杭电 HDU ACM 圆桌会议
圆桌会议
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 3356 Accepted Submission(s): 2351
5
6
4
6
类似于冒泡排序:试想一下 把一桌人看成一个标有序号的环,然后如果想让他逆序,那么可以把这个环 ,倒置过来就可以了,那么就存在在左右倒置的过程中,把环分为
两个相等段,两边标号恰好逆序了,(尽可能分为相等两段)。
voidbubble_sort(inta[],intn)//n为数组a的元素个数
{
inti,j,temp;
for(j=0;j<n-1;j++)
for(i=0;i<n-1-j;i++)
{
if(a[i]>a[i+1])//数组元素大小按升序排列
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
时间复杂度
和记录移动次数
均达到最小值:
,
。
。
若初始文件是反序的,需要进行
趟排序。每趟排序要进行
次关键字的比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值:
。
。
AC code:
#include<iostream>
using namespace std;
int main()
{
int N;
while(cin>>N)
{
int x,y;
x=N/2;
y=N-x;
cout<<(x*(x-1)/2+y*(y-1)/2)<<endl;
}
return 0;
}