C# 中字符串数组的插入排序

2024-01-15

如果我有一个字符串数组,例如

string[] names = {"John Doe", "Doe John", "Another Name", "Name Another"};

如何使用插入排序对该数组进行排序?

维基百科有一些例子:https://en.wikibooks.org/wiki/Algorithm_implementation/Sorting/Insertion_sort#C.23 https://en.wikibooks.org/wiki/Algorithm_implementation/Sorting/Insertion_sort#C.23

static void InsertSort(IComparable[] array)
{
    int i, j;

    for (i = 1; i < array.Length; i++)
    {
        IComparable value = array[i];
        j = i - 1;
        while ((j >= 0) && (array[j].CompareTo(value) > 0))
        {
            array[j + 1] = array[j];
            j--;
        }
        array[j + 1] = value;
    }
}

and

static void InsertSort<T>(IList<T> list) where T : IComparable<T>
{
    int i, j;

    for (i = 1; i < list.Count; i++)
    {
        T value = list[i];
        j = i - 1;
        while ((j >= 0) && (list[j].CompareTo(value) > 0))
        {
            list[j + 1] = list[j];
            j--;
        }
        list[j + 1] = value;
    }
}

但它似乎不适用于我的字符串数组,除非我做错了什么。

我能不跑吗

InsertSort(names); // like so?

对我来说效果很好:

class Program
{
    static void Main()
    {
        string[] names = { "John Doe", "Doe John", "Another Name", "Name Another" };
        InsertSort(names);
        foreach (var item in names)
        {
            Console.WriteLine(item);
        }
    }

    static void InsertSort(IComparable[] array)
    {
        int i, j;

        for (i = 1; i < array.Length; i++)
        {
            IComparable value = array[i];
            j = i - 1;
            while ((j >= 0) && (array[j].CompareTo(value) > 0))
            {
                array[j + 1] = array[j];
                j--;
            }
            array[j + 1] = value;
        }
    }
}

正如预期的那样,它打印:

Another Name
Doe John
John Doe
Name Another
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 中字符串数组的插入排序 的相关文章

随机推荐

  • 如何从 Protractor 测试 Angular js 日期选择器

    我是 Protractor 的新手 在这里我尝试测试 Protractor 的 angularjs 日期选择器 我试图找到一种方法来做到这一点并且本文 https www npmjs com package protractor angul
  • Woocommerce - 在前端中使用短代码显示单个产品属性

    在过去的几天里 我在这里阅读了很多问答 但不幸的是他们都没有解决我的问题 我正在尝试获取产品属性并使用短代码将它们显示在前端 我已设法显示所有可用属性并将它们显示在列表中 但我只需要在不同位置选择其中一两个属性 这就是使用短代码的原因 例如
  • iOS:UIScrollView 以编程方式缩放不起作用

    我有一个可分页的 UIScrollView 其中包含不同类型的信息 例如 UITables 但也包含可缩放图像 因此 我设置了一个可分页的主滚动视图 并作为子视图添加了可缩放的图像滚动视图 其中图像作为内容 一切正常 只是我无法设置 ima
  • 从 Amazon SQS 提供 Apache Spark Streaming?

    正如文档中所解释的那样 Spark 可以通过多种方式提供 如 Kafka Flume Twitter ZeroMQ Kinesis 或普通的旧式 TCP 套接字 有人知道如何从 Amazon SQS 提供 Spark Streaming 吗
  • 解码 Windows 7 便笺文件

    我喜欢 Windows 7 便签应用程序 需要编写一个快速脚本将我的笔记复制到我的 iPhone 比携带笔记本电脑参加会议更容易 如何从便利贴文件 C Users USER AppData Roaming Microsoft Sticky
  • 我最初的 UIScrollView 问题现在似乎与自动布局有关

    对于我的第一个挑战 使用UIScrollView我修改了这个例子 https stackoverflow com a 29300300 2348597使UIScrollView不仅显示另一种背景颜色 还显示另一种颜色UIView and U
  • html download 属性重定向到 url 而不是下载

    这里是网络开发新手 我正在尝试单击时从网址下载图像 但是当我使用图像 url 作为我的 href 时 它只是重定向到该 url 而不是下载 当然我使用的是下载属性 我已经尝试过我自己的代码以及其他人的多个代码块 但它们都只是重定向 我正在使
  • 如何在 iOS 上快速估计调整大小的图像的文件大小?

    在 邮件 中 当我添加图像并尝试发送它时 它会很快询问我要发送图像的尺寸 看截图 我想在一个应用程序中执行类似的操作 在该应用程序中我将上传图像 并希望用户能够在上传之前调整图像的大小 Apple 在这里估算文件大小的最佳方法是什么 似乎实
  • C++:每次我通过 fstream 读入时,最后都会多出 1 个字符

    每次我通过 fstream 读入时 最后都会多出 1 个字符 如何避免这种情况 EDIT ifstream readfile inputFile ofstream writefile outputFile char c while read
  • python 2 和 3 对于 utf-8 的区别

    为什么下面两个命令的输出不同 python2 7 c print 303 251 lt Great python3 6 c print 303 251 lt WTF 从 303 251 输出 的python3命令是什么 此致 Olivier
  • 是否可以在 Python 图像库 (PIL) 中屏蔽图像?

    我有一些交通摄像头图像 我只想提取道路上的像素 我以前使用过遥感软件 可以指定像这样的操作 img1 img2 img3 其中 img1 是原始图像 img2 是直接的黑白蒙版 本质上 图像的白色部分将评估为 img1 1 img3 黑色部
  • 等待publishProgress完成后再继续执行doInBackground AsyncTask android

    My AsyncTask看起来像 private class MyTask extends AsyncTask
  • 如何自动化精简版和高级版的 Android 构建?

    我正在寻找一种解决方案 使我能够构建 Android 应用程序的精简版和高级版 而无需手动操作 我正在寻找的功能是 自动重命名包 更改 AndroidManifest xml 文件中的主包名称 更改 java 或 和资源文件中的常量值或替换
  • Doctrine 在循环中更新实体,持久还是刷新?

    我有多个循环 例如 bets this gt em gt getRepository AppBundle Bet gt getBetsForMatch match id foreach bets as key gt bet devices
  • 如何用flutterbit分割日志(键)字段?

    我们使用 FluentBit 将 node js 代码发送到 OpenSearch 我们遇到问题是因为log键包含嵌套值作为message 我们需要拆分以下日志消息中提到的值 log level info message method GE
  • Git 提交后:skip --amend 和 rebase

    我有一个提交后挂钩 可以在 ruby 中执行操作 它工作得很好 但在某些情况下 我想在执行以下操作时跳过代码执行git rebase or git commit amend 有人知道在这些情况下我如何无法触发提交后挂钩或有任何解决方法吗 变
  • 如何在 Swift 中压缩数组? [复制]

    这个问题在这里已经有答案了 let array1 Albert Bobby let array2 Charles David 如何合并两个数组以便输出为 Albert Charles Bobby David 您可以使用zip组合两个数组 然
  • 找不到 msguniq。 Django 1.8、Windows 7 64 位

    我已经成功安装了 msguniq 可以检查其版本 我尝试更改对 windows xp 的兼容性并以管理员身份运行它 但仍然收到此错误 命令错误 找不到 msguniq 确保您有 GNU gettext 工具 安装 0 15 或更高版本 我真
  • 如何开启 git 自动获取?

    我有几个 git 项目 我想每天 例如早上 获取这些项目 并签出到分支 origin dev 的最后一次提交 当然 如果没有本地更改 例如 它可能不是 master分支 那么如何对目录中的所有项目执行此操作呢 如果您使用的是 nix mac
  • C# 中字符串数组的插入排序

    如果我有一个字符串数组 例如 string names John Doe Doe John Another Name Name Another 如何使用插入排序对该数组进行排序 维基百科有一些例子 https en wikibooks or