您的位置:首页 > 大数据 > 人工智能

Aizu ALDS1_2_C Stable Sort(稳定排序)

2016-11-29 13:20 369 查看
#include <bits/stdc++.h>
#define _ ios_base::sync_with_stdio(0);cin.tie(0);

#define INF 0x3f3f3f3f
#define eps 1e-5
typedef long long LL;
const double pi = acos(-1.0);
const long long mod = 25 * 1E8;
using namespace std;

int N;
struct data
{
char s;
int n;
}a[105],a1[105],a2[105];

void BubbleSort(int N)
{
for(int i = 0;i < N;i++)
for(int j = N - 1;j >= i + 1;j--)
if(a1[j].n < a1[j - 1].n)
swap(a1[j].s,a1[j - 1].s),swap(a1[j].n,a1[j - 1].n);
for(int i = 0;i < N - 1;i++)
printf("%c%d ",a1[i].s,a1[i].n);
printf("%c%d\n",a1[N - 1].s,a1[N - 1].n);
}

void SelectionSort(int N)
{
for(int i = 0;i < N;i++)
{
int mini = i;
for(int j = i;j < N;j++)
if(a2[j].n < a2[mini].n)
mini = j;
if(i != mini)
swap(a2[i].n,a2[mini].n),swap(a2[i].s,a2[mini].s);
}
for(int i = 0;i < N - 1;i++)
printf("%c%d ",a2[i].s,a2[i].n);
printf("%c%d\n",a2[N - 1].s,a2[N - 1].n);
}

bool cmp()
{
for(int i = 0;i < N;i++)
if(a1[i].s != a2[i].s)
return 0;
return 1;
}

int main()
{
//freopen("input.txt","r",stdin);
//freopen("output.txt","w",stdout);
ios_base::sync_with_stdio(0);cin.tie(0);
cin >> N;
for(int i = 0;i < N;i++)
{
cin >> a[i].s >> a[i].n;
a1[i].s = a2[i].s = a[i].s;
a1[i].n = a2[i].n = a[i].n;
}
BubbleSort(N);
puts("Stable");
SelectionSort(N);
if(cmp())
puts("Stable");
else
puts("Not stable");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: