字符串排序几种做法
1.用二维字符数组来排序
#include <bits/stdc++.h>
using namespace std;
#define N 100
char x[N][N];
char t[N];
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> x[i];
}
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - 1 - i; j++)
{
if (strcmp(x[j], x[j + 1]) > 0)
{
strcpy(t, x[j]);
strcpy(x[j], x[j + 1]);
strcpy(x[j + 1], t);
}
}
}
for (int i = 0; i < n; i++)
{
cout << x[i] << endl;
}
return 0;
}2.用结构体数组来做
#include <bits/stdc++.h>
using namespace std;
#define N 101
struct str
{
char s[N];
} a[N];
str tmp;
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
cin >> a[i].s;
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - 1 - i; j++)
{
if (strcmp(a[j].s, a[j + 1].s) > 0)
{
tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
}
}
}
for (int i = 0; i < n; i++)
cout << a[i].s << endl;
return 0;
}3.用指针数组来做
#include <bits/stdc++.h>
using namespace std;
#define N 100
char x[N][N];
char *y[N], *t;
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> x[i];
y[i] = x[i];
}
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - 1 - i; j++)
{
if (strcmp(y[j], y[j + 1]) > 0)
{
t = y[j], y[j] = y[j + 1], y[j + 1] = t;
}
}
}
for (int i = 0; i < n; i++)
{
cout << y[i] << endl;
}
return 0;
}