Вчера на работе я решил выяснить, как сортировать числа без использования библиотечного метода Array.Sort
. Я работал и выключался, когда позволяло время, и, наконец, смог придумать основной алгоритм работы в конце сегодняшнего дня. Это может быть довольно глупо и самым медленным способом, но я доволен, что у меня есть рабочий код.
Но в логике что-то не так или отсутствует, что приводит к зависанию вывода перед печатью строки: Numbers Sorted. (12/17/2011 2:11:42 AM)
Эта задержка прямо пропорциональна количеству элементов в массиве. Чтобы быть точным, вывод просто висит на позиции, где я положил тильду в разделе результатов ниже. Содержание после тильды печатается после этой заметной задержки.
Вот код, который выполняет сортировку:
while(pass != unsortedNumLen)
{
for(int i=0,j=1; i < unsortedNumLen-1 && j < unsortedNumLen; i++,j++)
{
if (unsorted[i] > unsorted[j])
{
pass = 0;
swaps++;
Console.Write("Swapping {0} and {1}:\t", unsorted[i], unsorted[j]);
tmp = unsorted[i];
unsorted[i] = unsorted[j];
unsorted[j] = tmp;
printArray(unsorted);
}
else pass++;
}
}
Результаты:
Numbers unsorted. (12/17/2011 2:11:19 AM)
4 3 2 1
Swapping 4 and 3: 3 4 2 1
Swapping 4 and 2: 3 2 4 1
Swapping 4 and 1: 3 2 1 4
Swapping 3 and 2: 2 3 1 4
Swapping 3 and 1: 2 1 3 4
Swapping 2 and 1: 1 2 3 4
~
Numbers sorted. (12/17/2011 2:11:42 AM)
1 2 3 4
Number of swaps: 6
Можете ли вы помочь определить проблему с моей попыткой?
Ссылка на полный код
Это не домашняя работа, только я работаю.