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

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

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

Опорный элемент - полусумма минимального и максимального элементов. Ошибка - бесконечный цикл/рекурсия. В чём проблема не знаю(
Листинг программы
  1. static private void QuickSort(Inforamtion[] arr,int l,int r, int summa)
  2. {
  3. Inforamtion temp = new Inforamtion();
  4. int i = l;
  5. int j = r;
  6. while (i <= j)
  7. {
  8. while (arr[i].Year < summa && i<=r) i++;
  9. while (arr[j].Year > summa && j>=l) j--;
  10. if (i <= j)
  11. {
  12. temp = arr[i];
  13. arr[i] = arr[j];
  14. arr[j] = temp;
  15. i++;
  16. j--;
  17. }
  18. }
  19. if (i < r)
  20. QuickSort(arr, i, r,summa);
  21. if (l < j)
  22. QuickSort(arr, l, j,summa);
  23. }
Где сумма , это:
Листинг программы
  1. int min = info[0].Year; int max = info[0].Year; int summa;
  2. for (int z = 0; z < info.Length - 1; z++)
  3. {
  4. if (info[z].Year > info[z + 1].Year)
  5. {
  6. min = info[z + 1].Year;
  7. }
  8. if (info[z].Year < info[z + 1].Year)
  9. {
  10. max = info[z + 1].Year;
  11. }
  12. }
  13. summa = (min+max)/2;

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

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

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


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

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

10   голосов , оценка 4 из 5

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

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

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