我有一些关于在 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;
}
交换和检查 - 我的应用程序的要求。
PS我多次看到SO不喜欢为某人做作业。这就是为什么我没有要求提供代码,我只是询问了如何实现这一点的想法。
再次感谢那些在这里帮助过我的人。