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

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

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

Есть Json файл, надо его отсортировать по Kod методом пузырька
[
    {
        "KC": "3",
        "Kod": "114521226",
        "Name": "База по ремонту бурового оборудования",
        "global_id": 63739355,
        "system_object_id": "114521226"
    },
    {
        "KC": "6",
        "Kod": "143314139",
        "Name": "Устройства вспомогательные и оборудование для подготовки образцов полимерных материалов",
        "global_id": 63741226,
        "system_object_id": "143314139"
    },
    {
        "KC": "5",
        "Kod": "143020544",
        "Name": "Инструменты и принадлежности для вычислительной техники",
        "global_id": 63740707,
        "system_object_id": "143020544"
    },
    {
        "KC": "2",
        "Kod": "142929556",
        "Name": "Агрегаты на базе червячных машин для переработки резиновых смесей",
        "global_id": 63735873,
        "system_object_id": "142929556"
    },
    {
        "KC": "8",
        "Kod": "142926571",
        "Name": "Оборудование для химической обработки",
        "global_id": 63740075,
        "system_object_id": "142926571"
    },
]

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

textual
Листинг программы
using System;
using System.Collections.Generic;
 
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
 
namespace CyberForum
{
    public class JArraySortingV2
    {
        public static void Main(string[] args)
        {
            const string jsonText = @"
[
    {
        ""KC"": ""3"",
        ""Kod"": ""114521226"",
        ""Name"": ""База по ремонту бурового оборудования"",
        ""global_id"": 63739355,
        ""system_object_id"": ""114521226""
    },
    {
        ""KC"": ""6"",
        ""Kod"": ""143314139"",
        ""Name"": ""Устройства вспомогательные и оборудование для подготовки образцов полимерных материалов"",
        ""global_id"": 63741226,
        ""system_object_id"": ""143314139""
    },
    {
        ""KC"": ""5"",
        ""Kod"": ""143020544"",
        ""Name"": ""Инструменты и принадлежности для вычислительной техники"",
        ""global_id"": 63740707,
        ""system_object_id"": ""143020544""
    },
    {
        ""KC"": ""2"",
        ""Kod"": ""142929556"",
        ""Name"": ""Агрегаты на базе червячных машин для переработки резиновых смесей"",
        ""global_id"": 63735873,
        ""system_object_id"": ""142929556""
    },
    {
        ""KC"": ""8"",
        ""Kod"": ""142926571"",
        ""Name"": ""Оборудование для химической обработки"",
        ""global_id"": 63740075,
        ""system_object_id"": ""142926571""
    },
]";
 
            JArray jsonArray = JArray.Parse(jsonText);
 
            int itemsCount = jsonArray.Count;
 
            string[] codes = new string[itemsCount];
            int[] indices = new int[itemsCount];
 
            for (int index = 0; index < itemsCount; ++index)
            {
                codes[index] = (string)jsonArray[index]["Kod"];
                indices[index] = index;
            }
 
            BubbleSort(codes, indices, StringComparer.OrdinalIgnoreCase);
 
            for (int index = 0; index < itemsCount; ++index)
            {
                Console.WriteLine("cycle index: {0}\tarray index: {1}", index, indices[index]);
                Console.WriteLine(jsonArray[indices[index]]);
            }
        }
 
        private static void BubbleSort<TKey, TValue>(TKey[] keys, TValue[] values, IComparer<TKey> comparer)
        {
            if (keys.Length != values.Length)
            {
                // error! arrays' length does not match!
                throw new ArgumentException("Oops! Invalid arrays' length.");
            }
            
            int length = keys.Length;
 
            if (length == 1)
            {
                // nothing to sort - one item in array
                return;
            }
 
            for (int index = 0; index < length; ++index)
            {
                for (int inner = length - 1; inner > index; --inner)
                {
                    int comparison = comparer.Compare(keys[inner], keys[inner - 1]);
                    if (comparison < 0)
                    {
                        Swap(ref keys[inner], ref keys[inner - 1]);
                        Swap(ref values[inner], ref values[inner - 1]);
                    }
                }
            }
        }
 
        private static void Swap<TValue>(ref TValue left, ref TValue right)
        {
            TValue temp = left;
            left = right;
            right = temp;
        }
    }
}

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


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

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

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