Отсортировать Json файл методом пузырька - C#

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

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

Есть Json файл, надо его отсортировать по Kod методом пузырька
Листинг программы
  1. [
  2. {
  3. "KC": "3",
  4. "Kod": "114521226",
  5. "Name": "База по ремонту бурового оборудования",
  6. "global_id": 63739355,
  7. "system_object_id": "114521226"
  8. },
  9. {
  10. "KC": "6",
  11. "Kod": "143314139",
  12. "Name": "Устройства вспомогательные и оборудование для подготовки образцов полимерных материалов",
  13. "global_id": 63741226,
  14. "system_object_id": "143314139"
  15. },
  16. {
  17. "KC": "5",
  18. "Kod": "143020544",
  19. "Name": "Инструменты и принадлежности для вычислительной техники",
  20. "global_id": 63740707,
  21. "system_object_id": "143020544"
  22. },
  23. {
  24. "KC": "2",
  25. "Kod": "142929556",
  26. "Name": "Агрегаты на базе червячных машин для переработки резиновых смесей",
  27. "global_id": 63735873,
  28. "system_object_id": "142929556"
  29. },
  30. {
  31. "KC": "8",
  32. "Kod": "142926571",
  33. "Name": "Оборудование для химической обработки",
  34. "global_id": 63740075,
  35. "system_object_id": "142926571"
  36. },
  37. ]

Решение задачи: «Отсортировать Json файл методом пузырька»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. using Newtonsoft.Json;
  5. using Newtonsoft.Json.Linq;
  6.  
  7. namespace CyberForum
  8. {
  9.     public class JArraySortingV2
  10.     {
  11.         public static void Main(string[] args)
  12.         {
  13.             const string jsonText = @"
  14. [
  15.    {
  16.        ""KC"": ""3"",
  17.        ""Kod"": ""114521226"",
  18.        ""Name"": ""База по ремонту бурового оборудования"",
  19.        ""global_id"": 63739355,
  20.        ""system_object_id"": ""114521226""
  21.    },
  22.    {
  23.        ""KC"": ""6"",
  24.        ""Kod"": ""143314139"",
  25.        ""Name"": ""Устройства вспомогательные и оборудование для подготовки образцов полимерных материалов"",
  26.        ""global_id"": 63741226,
  27.        ""system_object_id"": ""143314139""
  28.    },
  29.    {
  30.        ""KC"": ""5"",
  31.        ""Kod"": ""143020544"",
  32.        ""Name"": ""Инструменты и принадлежности для вычислительной техники"",
  33.        ""global_id"": 63740707,
  34.        ""system_object_id"": ""143020544""
  35.    },
  36.    {
  37.        ""KC"": ""2"",
  38.        ""Kod"": ""142929556"",
  39.        ""Name"": ""Агрегаты на базе червячных машин для переработки резиновых смесей"",
  40.        ""global_id"": 63735873,
  41.        ""system_object_id"": ""142929556""
  42.    },
  43.    {
  44.        ""KC"": ""8"",
  45.        ""Kod"": ""142926571"",
  46.        ""Name"": ""Оборудование для химической обработки"",
  47.        ""global_id"": 63740075,
  48.        ""system_object_id"": ""142926571""
  49.    },
  50. ]";
  51.  
  52.             JArray jsonArray = JArray.Parse(jsonText);
  53.  
  54.             int itemsCount = jsonArray.Count;
  55.  
  56.             string[] codes = new string[itemsCount];
  57.             int[] indices = new int[itemsCount];
  58.  
  59.             for (int index = 0; index < itemsCount; ++index)
  60.             {
  61.                 codes[index] = (string)jsonArray[index]["Kod"];
  62.                 indices[index] = index;
  63.             }
  64.  
  65.             BubbleSort(codes, indices, StringComparer.OrdinalIgnoreCase);
  66.  
  67.             for (int index = 0; index < itemsCount; ++index)
  68.             {
  69.                 Console.WriteLine("cycle index: {0}\tarray index: {1}", index, indices[index]);
  70.                 Console.WriteLine(jsonArray[indices[index]]);
  71.             }
  72.         }
  73.  
  74.         private static void BubbleSort<TKey, TValue>(TKey[] keys, TValue[] values, IComparer<TKey> comparer)
  75.         {
  76.             if (keys.Length != values.Length)
  77.             {
  78.                 // error! arrays' length does not match!
  79.                 throw new ArgumentException("Oops! Invalid arrays' length.");
  80.             }
  81.            
  82.             int length = keys.Length;
  83.  
  84.             if (length == 1)
  85.             {
  86.                 // nothing to sort - one item in array
  87.                 return;
  88.             }
  89.  
  90.             for (int index = 0; index < length; ++index)
  91.             {
  92.                 for (int inner = length - 1; inner > index; --inner)
  93.                 {
  94.                     int comparison = comparer.Compare(keys[inner], keys[inner - 1]);
  95.                     if (comparison < 0)
  96.                     {
  97.                         Swap(ref keys[inner], ref keys[inner - 1]);
  98.                         Swap(ref values[inner], ref values[inner - 1]);
  99.                     }
  100.                 }
  101.             }
  102.         }
  103.  
  104.         private static void Swap<TValue>(ref TValue left, ref TValue right)
  105.         {
  106.             TValue temp = left;
  107.             left = right;
  108.             right = temp;
  109.         }
  110.     }
  111. }

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


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

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

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

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

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

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