Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,35 +9,35 @@

void CountingSort(int[] inputArray)
{
int[] counters = new int[10]; //массив повторений
int[] counters = new int[10]; //массив повторений изначально заполнен нулями. Длина соответствует значению максимального элемента исходного массива

for (int i = 0; i < inputArray.Length; i++)
{
counters[inputArray[i]]++;
counters[inputArray[i]]++; //в ячейку массива counters с индексом, соответствующим значению элемента исходного массива, добавляется единица, т.о. считается количество вхождений повторяющихся элементов
// ourNumber = inputArray[i];
// counters[ourNumber]++;
}

int index = 0;
for (int i = 0; i < counters.Length; i++)
{
for (int j = 0; j < counters[i]; j++)
for (int j = 0; j < counters[i]; j++) // внутренний цикл проходит по i-той ячейке массива counters столько раз, сколько указано в её значении
{
inputArray[index] = i;
index++;
inputArray[index] = i; // ... и добавляет значение i в отсортированный масив нужное количество раз
index++; // сдвигаем индекс, чтобы двигаться по отсортированному массиву
}
}
}


int[] CountingSortExtended(int[] inputArray)
int[] CountingSortExtended(int[] inputArray) // метод для сортировки массивов со значениями больше десяти, включая отрицательные
{
int max = inputArray.Max();
int min = inputArray.Min();

int offset = -min;
int offset = -min; //сдвиг относительно нуля в отрицательную, либо положительную сторону
int[] sortedArray = new int[inputArray.Length];
int[] counters = new int[max + offset + 1];
int[] counters = new int[max + offset + 1]; // +1, чтобы включить и первый и последний элемент диапазона



Expand Down