java - 如何在 Java 中实现 unicode 感知选择排序算法

标签 java algorithm sorting unicode

我研究选择排序算法。考虑这个实现:

http://algs4.cs.princeton.edu/21elementary/Selection.java.html

我有一个文本文件,其中包含这样的 unicode 单词。

$ more words.txt
şeftali içel ırak üzüm uzun çorba çimen ufuk

当我运行该程序时,它没有正确地对 unicode 字符进行排序。

$ java-algs4 Selection < words.txt
içel
ufuk
uzun
çimen
çorba
üzüm
ırak
şeftali

我的第一次尝试是使用整理器。

import java.util.*;
import java.text.*;

public class StringSorter
{
    public static void sortStrings(Collator c, String[] words)
    {
        String tmp;

        for (int i = 0; i < words.length; ++i)
        {
            for (int j = 0; j < words.length; ++j)
            {
                if (c.compare(words[i], words[j]) < 0)
                {
                    tmp = words[i];
                    words[i] = words[j];
                    words[j] = tmp;
                }
            }
        }
    }

    public static void printStrings(String[] words)
    {
        for (int i = 0; i < words.length; ++i)
        {
            System.out.println(words[i]);
        }
    }

    public static void main(String[] args)
    {
        Collator tr_TRCollator = Collator.getInstance(new Locale("tr", "TR"));

        String[] words = {"şeftali", "içel", "ırak", "üzüm", "uzun", "çorba", "çimen", "ufuk"};
        sortStrings(tr_TRCollator, words);
        printStrings(words);
    }

}

此程序按预期正确排序单词。

$ java-algs4 StringSorter
çimen
çorba
ırak
içel
şeftali
ufuk
uzun
üzüm

我的问题是我们应该如何在 Java 中实现 unicode 感知选择排序算法?

还有 Selection.class sort 方法将 Comparator 对象作为第二个参数。是否可以编写我们自己的 Comparator 接口(interface)实现,以便它能够正确地对 unicode 元素进行排序。

 public static void sort(Object[] a, Comparator c)

如有任何帮助,我们将不胜感激。谢谢..

最佳答案

Collat​​or 类实现了 Comparator 接口(interface),因此您只需将 tr_TRCollat​​or 传递给 Selection.sort 作为第二个参数。

关于java - 如何在 Java 中实现 unicode 感知选择排序算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35602782/

相关文章:

algorithm - 排序算法的性能分析

sorting - 推力:sort_by_key 与 zip_iterator 性能

java - 为什么 setIcon 不在 JButton 上显示图像?

java - Android 证书签名和应用程序名称

java - 在相对路径上解析具有 DTD 架构的 XML 文件

Java从字符串中替换精确的子字符串

java - 如何从 map 中为每个数据中心打印随机主机?

c - 动态规划递归给出错误结果

c++ - *max_element() 在此代码段中如何工作?

algorithm - 从未排序数组的中位数查找 K 个最接近的元素