我有一些关于在 C# 中对数组进行排序的任务。我一直在尝试我能想到的一切 - 没有运气。

任务是通过已知的排序算法(插入、选择、冒泡、快速)对整数数组进行排序。事情是,我必须仅对 最小的 M 元素进行排序。

示例:我有一个包含 7 个元素的数组 2 9 8 3 4 15 11 ,我需要对最小的 3 个元素进行排序,以便我的数组变为 2 3 4 9 8 15 11

请帮助,我似乎无法在 SO 中或通过 Google 的任何地方找到任何内容。我不要求为我做所有的算法,我只需要其中之一来掌握这怎么可能。

E:谢谢你的想法。我已经查看了您的所有建议,并且已经完成了这样的插入排序:

static int[] insertSort(int[] arr, out int swaps, out int checks) {
    int step = 0;
    swaps = 0;
    checks = 0;
    for (int i = 0; i < arr.Length; i++) {
        int min = arr[i], minind = i;
        for (int j = i + 1; j < arr.Length; j++) {
            checks++;
            if (arr[j] < min) {
                min = arr[j];
                minind = j;
            }
        }
        int temp = arr[minind];
        if (step < M) {
            for (int j = minind; j > i; j--) {
                swaps++;
                arr[j] = arr[j - 1];
            }
            arr[i] = temp;
            swaps++;
            step++;
        }
    }
    return arr;
}

掉期和支票 - 我的申请要求。

附言我已经多次看到 SO 不喜欢为某人做作业。这就是为什么我没有要求提供代码,我只是询问了如何实现这一点的想法。

再次感谢那些在这里帮助过我的人。

最佳答案

由于没有效率限制:

  • 将 i 设置为 0。
  • 在未排序的元素中寻找最小值。
  • 插入到位置i,移位数组。
  • 增量 i。
  • 重复 M 次。

  • 复杂度为 O(N * M)。

    关于c# - 如何对N长度数组中的前M个元素进行排序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13568266/

    10-12 18:05
    查看更多