Нужно найти элементы массива,значения которых больше последнего элемента и поместить их в новый массив - C#

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

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

Потом этот массив необходимо отсортировать методом Хоара. Подскажите пожалуйста,как правильно заполнить новый массив элементами. Видимо,я делаю что-то не так
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Diagnostics;
  5. using System.Threading;
  6. namespace CSharpSort
  7. {
  8. class Program
  9. {
  10. static public int Partition(int[] numbers, int left, int right)
  11. {
  12. int baz = numbers[left];
  13. while (true)
  14. {
  15. while (numbers[left] < baz)
  16. left++;
  17. while (numbers[right] > baz)
  18. right--;
  19. if (left < right)
  20. {
  21. int temp = numbers[right];
  22. numbers[right] = numbers[left];
  23. numbers[left] = temp;
  24. }
  25. else
  26. {
  27. return right;
  28. }
  29. }
  30. }
  31. static public void QuickSort_Recursive(int[] arr, int left, int right)
  32. {
  33. if (left < right)
  34. {
  35. int baz = Partition(arr, left, right);
  36. if (baz > 1)
  37. QuickSort_Recursive(arr, left, baz - 1);
  38. if (baz + 1 < right)
  39. QuickSort_Recursive(arr, baz + 1, right);
  40. }
  41. }
  42. static void Main(string[] args)
  43. {
  44. Stopwatch stopWatch = new Stopwatch();
  45. stopWatch.Start();
  46. int[] X = { 3, 8, 7, 5, 2, 1, 9, 9, 4 };
  47. // добавление в новый массив
  48. int k = 0;
  49. int[] nov = new int[9];
  50. int N = 9;
  51. for (int i = 0; i < N; i++)
  52. {
  53. if (X[i] > X[N - 1])
  54. {
  55. nov[k] = X[i];
  56. }
  57.  
  58. }
  59. for (int i = 0; i < 9; i++) {
  60. Console.WriteLine(nov[i]); }
  61.  
  62. Console.WriteLine("Sortirovka hoara ");
  63. QuickSort_Recursive(nov, 0, nov.Length - 1);
  64. for (int i = 0; i < 9; i++)
  65. Console.WriteLine(nov[i]);
  66. stopWatch.Stop();
  67. TimeSpan ts = stopWatch.Elapsed;
  68. string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
  69. ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds );
  70. Console.WriteLine(" "+elapsedTime);
  71.  
  72. }
  73. }
  74. }

Решение задачи: «Нужно найти элементы массива,значения которых больше последнего элемента и поместить их в новый массив»

textual
Листинг программы
  1. using System;
  2.  
  3. namespace CSharpSort
  4. {
  5.     class Program
  6.     {
  7.             static int Partition(int[] array, int start, int end)
  8.             {
  9.                 int marker = start;
  10.                 for (int i = start; i <= end; i++)
  11.                 {
  12.                     if (array[i] <= array[end])
  13.                     {
  14.                         int temp = array[marker]; // swap
  15.                         array[marker] = array[i];
  16.                         array[i] = temp;
  17.                         marker += 1;
  18.                     }
  19.                 }
  20.                 return marker - 1;
  21.             }
  22.             static void Sort(int[] array, int start, int end)
  23.             {
  24.                 if (start >= end)
  25.                 {
  26.                     return;
  27.                 }
  28.                 int pivot = Partition(array, start, end);
  29.                 Sort(array, start, pivot - 1);
  30.                 Sort(array, pivot + 1, end);
  31.             }
  32.             static public void Show(int[] arr)
  33.                 {
  34.                     for (int i = 0; i < arr.Length; i++)
  35.                     {
  36.                         Console.Write(arr[i] + " ");
  37.                     }
  38.                     Console.WriteLine();
  39.                 }
  40.  
  41.                 static void Main(string[] args)
  42.                 {
  43.                     int[] arr = { 3, 8, 7, 5, 2, 1, 9, 9, 4 };
  44.  
  45.                     // подсчет кол-ва элементов нового массива
  46.                     Show(arr);
  47.  
  48.                     int count = 0;
  49.                     int lastEl = arr[arr.Length - 1];
  50.  
  51.                     for (int i = 0; i < arr.Length; i++)
  52.                     {
  53.                         if (arr[i] > lastEl)
  54.                             count++;
  55.                     }
  56.  
  57.                     int k = 0;
  58.                     int[] sortedArr = new int[count];
  59.  
  60.                     for (int i = 0; i < arr.Length; i++)
  61.                     {
  62.                         if (arr[i] > lastEl)
  63.                         {
  64.                             sortedArr[k] = arr[i];
  65.                             k++;
  66.                         }
  67.                     }
  68.  
  69.                     Console.WriteLine("Unsorted: ");
  70.                     Show(sortedArr);
  71.  
  72.                     Console.WriteLine("Sortirovka hoara ");
  73.  
  74.                     Sort(sortedArr, 0, sortedArr.Length - 1);
  75.  
  76.                     Console.WriteLine("Sorted:");
  77.                     Show(sortedArr);
  78.                 }
  79.         }
  80. }

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


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

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

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

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

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

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