题目大意:设有n个正整数,现在需要你设计一个程序,使他们连接起来成为最大的数字
每个数字都在Int型范围内
题目中使用了冒泡排序
#include<iostream>
#include<cstring>
#include<algorithm>
#include<math.h>
using namespace std;
int compare(int num1,int num2)
{
int midnum1=num1,midnum2=num2;
int count1=0,count2=0;
int a,b;
while( midnum1 )
{
count1++;
midnum1/=10;
}
while( midnum2 )
{
count2++;
midnum2/=10;
}
a=num1*pow(10.0,count2)+num2;
b=num2*pow(10.0,count1)+num1;
return (a>b)?1:0;
}
int main()
{
int array[11000];
int n;
int i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&array[i]);
}
int temp;
for(i=0;i<=n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if( compare(array[j],array[j+1]) )//返回值为1说明 array[j]>array[j+1]
{
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
for(i=n-1;i>=0;i--)
{
printf("%d",array[i]);
}
printf("\n");
return 0;
}