Отсортировать 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;
}
}
}