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