我有一些關於在C#中對數組進行排序的任務。我一直在想我能想到的一切 - 沒有運氣。如何排序N長度數組中的第一個M元素?
任務是通過已知的排序算法(插入,選擇,泡泡,快速)對整數數組進行排序。事情是,我必須排序只有最小的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;
}
互換和支票 - 我的應用需求。
P.S.我已經看過很多次,所以不喜歡爲某人做作業。這就是爲什麼我沒有要求代碼,我只是想了解如何實現這一點。
再次感謝那些幫助過我的人。
功課可能會導致問題.... – flindeberg
爲什麼會這樣呢?難?你只是假裝數組比實際短並對其進行分類。 – Earlz
@Earlz再次閱讀問題...... –