Быстрая сортировка. Бесконечный цикл - C#

Узнай цену своей работы

Формулировка задачи:

Реализовал алгоритм быстрой сортировки. Но нужно учесть , что опорный элемент является полусумма минимального и максимального элементов в массиве. Но компил жалуется на бесконечный цикл. Не могу понять, где ошибка.
Листинг программы
  1. static void QuickSort(Inforamtion[] arr,int l,int r)
  2. {
  3. int min = arr[0].Year; int max = arr[0].Year; int summa;
  4. for (int z = 0; z < arr.Length - 1; z++)
  5. {
  6. if (arr[z].Year > arr[z + 1].Year)
  7. {
  8. min = arr[z + 1].Year;
  9. }
  10. if (arr[z].Year < arr[z + 1].Year)
  11. {
  12. max = arr[z + 1].Year;
  13. }
  14. }
  15. summa = (min + max) / 2;
  16. Inforamtion temp = new Inforamtion();
  17. int i = l;
  18. int j = r;
  19. while (i <= j)
  20. {
  21. while (arr[i].Year < summa) i++;
  22. while (arr[j].Year > summa) j--;
  23. if (i <= j)
  24. {
  25. temp = arr[i];
  26. arr[i] = arr[j];
  27. arr[j] = temp;
  28. i++;
  29. j--;
  30. }
  31. }
  32. if (i < r)
  33. QuickSort(arr, i, r);
  34. if (l < j)
  35. QuickSort(arr, l, j);
  36. }

Решение задачи: «Быстрая сортировка. Бесконечный цикл»

textual
Листинг программы
  1. static void QuickSort(Inforamtion[] arr,int l,int r)
  2. {
  3.     int min = arr[l].Year; int max = arr[r].Year; int summa;
  4.     for (int z = l; z < r; z++)
  5.     {
  6.         if (arr[z].Year > arr[z + 1].Year)
  7.         {
  8.             min = arr[z + 1].Year;
  9.         }
  10.         if (arr[z].Year < arr[z + 1].Year)
  11.         {
  12.             max = arr[z + 1].Year;
  13.         }
  14.     }
  15.     summa = (int)Math.Round((min + max) / 2d);
  16.     Inforamtion temp = new Inforamtion();
  17.     int i = l;
  18.     int j = r;
  19.  
  20.     while (i <= j)
  21.     {
  22.         while (arr[i].Year < summa) i++;
  23.         while (arr[j].Year > summa) j--;
  24.         if (i <= j)
  25.         {
  26.             temp = arr[i];
  27.             arr[i] = arr[j];
  28.             arr[j] = temp;
  29.             i++;
  30.             j--;
  31.         }
  32.     }
  33.     if (i < r)
  34.         QuickSort(arr, i, r);
  35.  
  36.     if (l < j)
  37.         QuickSort(arr, l, j);
  38. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут