字符串排序几种做法

作者: qiqi 分类: c++ 发布时间: 2026-01-28 15:48

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;
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

标签云