我有一些关于在 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 不喜欢为某人做作业。这就是为什么我没有要求提供代码,我只是询问了如何实现这一点的想法。
再次感谢那些在这里帮助过我的人。
最佳答案
由于没有效率限制:
复杂度为 O(N * M)。
关于c# - 如何对N长度数组中的前M个元素进行排序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13568266/