Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 3482 Solved: 1325
[Submit][Status]
排序算法的稳定性是指,序列中任意两个相等的数在排序先后的次序不发生变化。满足这一性质的排序算法,就是稳定的排序算法。
稳定的排序算法有:冒泡排序、插入排序、归并排序、基数排序。
不稳定的排序算法:基本排序、选择排序、快速排序、希尔排序、堆排序。
下面这个问题可以测试排序的稳定性。
给出一个浮点数的序列,要求按照浮点数的整数部分大小排序。并且,整数部分相同浮点数之间的先后次序,在排序后不发生变化。
输入为N(N<50)测试样例。每组测试样例以一个正整数M(M<=100)开头,后接M个待排序的浮点数。
每组测试样例对应输出一行,按浮点数的整数部分排序,但整数部分相同小数部分不同的浮点数,先后顺序不变。
所有浮点数输出保留一位小数,用一个空格分开,行尾不要有多余的空格。
3 10 1.6 1.7 1.8 2.1 2.2 2.3 2.4 2.5 5.9 6.0 10 6.0 5.9 2.5 2.4 2.3 2.2 2.1 1.8 1.7 1.6 10 2.2 2.4 1.8 5.9 1.6 2.5 2.1 6.0 1.7 2.3
1.6 1.7 1.8 2.1 2.2 2.3 2.4 2.5 5.9 6.0 1.8 1.7 1.6 2.5 2.4 2.3 2.2 2.1 5.9 6.0 1.8 1.6 1.7 2.2 2.4 2.5 2.1 2.3 5.9 6.0
#include
#include
//char a[1001][100];
void
sort(
double
*a,
int
n)
{
int
i,j;
for
(i=0;i
{
for
(j=0;j
{
if
((
int
)a[j]>(
int
)a[j+1])
{
double
temp;
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
int
main()
{
double
a[109];
int
i,m,n,k;
scanf
(
"%d"
,&m);
for
(k=0;k
{
scanf
(
"%d"
,&n);
for
(i=0;i
scanf
(
"%lf"
,&a[i]);
sort(a,n);
int
flag=0;
for
(i=0;i
{
if
(flag==0)
printf
(
"%.1lf"
,a[i]);
else
printf
(
" %.1lf"
,a[i]);
flag=1;
}
puts
(
""
);
}
}