【问题标题】:classwork - shellsort in c#?课堂作业 - c# 中的 shellsort?
【发布时间】:2010-12-14 14:50:36
【问题描述】:

我需要一种在 c# 中使用 ShellSort 对数组进行排序的简单方法,请帮助我

【问题讨论】:

标签: c# sorting shellsort


【解决方案1】:

使用 shell 排序。

【讨论】:

  • 我差点窒息而死 :)
  • gr8 对 gr8 问题的回答 :)
  • DoYourOwnHomework 和 Arthur 在被问到这个问题时都排名第一。但是 DoYourOwnHomework 真的很受欢迎!!
【解决方案2】:

没有人会为您编写代码。你在那里学习。我会采取以下步骤:

  1. 转到Wikipedia's Shell Sort Page

  2. 找到算法的伪代码。阅读它,直到你理解它的作用。

  3. 将伪代码移植到 C#。

  4. 如果您在实施过程中遇到问题,请随时回来提出具体问题。

【讨论】:

  • 4.如果您在实施过程中遇到问题,请随时回来提出具体问题。
【解决方案3】:
    public static int[] shellSort(int[] ar)
    {
        //this gaps array works but is not unique
        int[] gaps = new int[] { 1, 4, 10, 23, 57, 132, 301, 701 };
        gaps = gaps.Reverse().ToArray();

        Func<int, int, bool> potentialSwitch = (ind1, ind2) =>
        {
            if (ar[ind2] < ar[ind1])
            {
                int temp = ar[ind2];
                ar[ind2] = ar[ind1];
                ar[ind1] = temp;
                return true;
            }
            return false;
        };

        foreach (int gap in gaps)
        {
            if (gap >= ar.Length)
                continue;

            for (int i = 0; i + gap < ar.Length; i++)
            {
                int j = i;
                while (potentialSwitch(j, j + gap))
                {
                    j -= gap;
                    if (j < 0)
                        break;
                }
            }
        }

        return ar;
    }

【讨论】:

    猜你喜欢
    • 2016-02-21
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多