Быстрая сортировка. Бесконечный цикл - C#
Формулировка задачи:
Реализовал алгоритм быстрой сортировки. Но нужно учесть , что опорный элемент является полусумма минимального и максимального элементов в массиве.
Но компил жалуется на бесконечный цикл. Не могу понять, где ошибка.
static void QuickSort(Inforamtion[] arr,int l,int r) { int min = arr[0].Year; int max = arr[0].Year; int summa; for (int z = 0; z < arr.Length - 1; z++) { if (arr[z].Year > arr[z + 1].Year) { min = arr[z + 1].Year; } if (arr[z].Year < arr[z + 1].Year) { max = arr[z + 1].Year; } } summa = (min + max) / 2; Inforamtion temp = new Inforamtion(); int i = l; int j = r; while (i <= j) { while (arr[i].Year < summa) i++; while (arr[j].Year > summa) j--; if (i <= j) { temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; i++; j--; } } if (i < r) QuickSort(arr, i, r); if (l < j) QuickSort(arr, l, j); }
Решение задачи: «Быстрая сортировка. Бесконечный цикл»
textual
Листинг программы
static void QuickSort(Inforamtion[] arr,int l,int r) { int min = arr[l].Year; int max = arr[r].Year; int summa; for (int z = l; z < r; z++) { if (arr[z].Year > arr[z + 1].Year) { min = arr[z + 1].Year; } if (arr[z].Year < arr[z + 1].Year) { max = arr[z + 1].Year; } } summa = (int)Math.Round((min + max) / 2d); Inforamtion temp = new Inforamtion(); int i = l; int j = r; while (i <= j) { while (arr[i].Year < summa) i++; while (arr[j].Year > summa) j--; if (i <= j) { temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; i++; j--; } } if (i < r) QuickSort(arr, i, r); if (l < j) QuickSort(arr, l, j); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д