Быстрая сортировка. Бесконечный цикл - 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);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д