字符串排序

Posted 新生代黑马

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串排序相关的知识,希望对你有一定的参考价值。

题目描述

  给定n个字符串,请对n个字符串按照字典序排列。 

输入描述

  输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。

输出描述  

  数据输出n行,输出结果为按照字典序排列的字符串。

输入样例

9
cap
to
cat
card
two
too
up
boat
boot

输出样例

boat
boot
cap
card
cat
to
too
two
up

C/C++测试代码1

 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int n;
 8     string str[1000], temp;
 9     while (cin >> n)
10     {
11         for (int i = 0; i < n; i++)
12         {
13             cin >> str[i];
14         }
15         //C++的string类对>、<这类比较运算符进行了重载,可以直接用来比较字符串
16         for (int i = 0; i < n - 1; i++)
17         {
18             for (int j = 0; j < n - 1 - i; j++)
19             {
20                 if (str[j] > str[j + 1])
21                 {
22                     temp = str[j];
23                     str[j] = str[j + 1];
24                     str[j + 1] = temp;
25                 }
26             }
27         }
28         for (int i = 0; i < n; i++)
29         {
30             cout << str[i] << endl;
31         }
32     }
33     return 0;
34 }

C/C++测试代码2

 1 #include <iostream>
 2 #include <string>
 3 #include <map>
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int n;
 9     string str, temp;
10     map<string, int> res;
11     while (cin >> n)
12     {
13         for (int i = 0; i < n; i++)
14         {
15             cin >> str;
16             res[str]++;
17         }
18         for (map<string, int>::iterator it = res.begin(); it != res.end(); it++)
19         {
20             while (it->second--)
21             {
22                 cout << it->first << endl;
23             }
24         }
25     }
26     return 0;
27 }

C/C++测试代码3

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdlib.h>
 4 #include <assert.h>
 5 
 6 int cmp(const void *p, const void *q)
 7 {
 8     return strcmp(*(char **)p, *(char **)q);
 9 }
10 
11 int main()
12 {
13     int n;
14     char **p = NULL;
15     scanf("%d", &n);
16     p = (char **)malloc(n * sizeof(char *));
17     assert(p != NULL);
18     //成功开辟空间并接收字符串
19     for (int i = 0; i < n; i++)
20     {
21         p[i] = (char *)malloc(105 * sizeof(char));
22         assert(p[i] != NULL);
23         scanf("%s", p[i]);
24     }
25     qsort(p, n, sizeof(p[0]), cmp);
26     for (int i = 0; i < n; i++)
27     {
28         puts(p[i]);
29     }
30     free(p);
31     return 0;
32 }

Java测试代码1

 1 import java.util.Arrays;
 2 import java.util.Scanner;
 3 
 4 public class Main {
 5     public static void main(String[] args) {
 6         Scanner sc = new Scanner(System.in);
 7         int n = sc.nextInt();
 8         String[] str = new String[n];
 9         for (int i = 0; i < n; i++) {
10             str[i] = sc.nextLine();
11         }
12         Arrays.sort(str);
13         for(int i = 0; i < str.length; i++) {
14             System.out.println(str[i]);
15         }
16         sc.close();
17     }
18 }

Java测试代码2

 1 import java.util.ArrayList;
 2 import java.util.Collections;
 3 import java.util.Iterator;
 4 import java.util.List;
 5 import java.util.Scanner;
 6 
 7 public class Main {
 8     public static void main(String[] args) {
 9         Scanner sc = new Scanner(System.in);
10         int n = sc.nextInt();
11         List<String> list = new ArrayList<String>();
12         for (int i = 0; i < n; i++) {
13             list.add(sc.nextLine());
14         }
15         sc.close();
16         Collections.sort(list);
17         Iterator<String> it = list.iterator();
18         while (it.hasNext()) {
19             System.out.println(it.next());
20         }
21     }
22 }

以上是关于字符串排序的主要内容,如果未能解决你的问题,请参考以下文章

对数组中的字符串进行排序,使其稀疏

C# 与 F# 中的默认排序

spark 例子wordcount topk

从搜索文档中查找最小片段的算法?

以下代码片段的时间复杂度是多少?

markdown 数组排序片段