Учебное пособие C#. Алгоритмы и структуры данных н. А. Тюкачев, В. Г. Хлебостроев издание третье, стереотипное 1 / 23


Листинг 5.17. Извлечение целого значения из массива


Download 1.85 Mb.
Pdf ko'rish
bet78/111
Sana19.11.2023
Hajmi1.85 Mb.
#1786905
TuriУчебное пособие
1   ...   74   75   76   77   78   79   80   81   ...   111
Bog'liq
C# Алгоритмы и структуры данных 2018 Тюкачев, Хлебостроев

Листинг 5.17. Извлечение целого значения из массива
byData[] 
protected int DataInInt() 

int result = BitConverter.ToInt32(byData, ofs); 
ofs += 4; 
return result; 

и метод извлечения строки из массива byData[]
14 / 23


153 
Листинг 5.18. Извлечение строки из массива
byData[] 
protected string DataInStr() 

byte[] byByte; 
int L = DataInInt(); 
byByte = new byte[4 * L]; 
for (int j = 0; j <= 4 * L - 1; j++) 
byByte[j] = byData[j + ofs]; 
char[] charData = new char[L]; 
Decoder d = Encoding.UTF32.GetDecoder(); 
d.GetChars(byByte, 0, byByte.Length, charData, 
0); 
string s = ""; 
for (int j = 0; j < charData.Length; j++) 
s += charData[j]; 
ofs += 4 * L; 
return s; 

Извлечение строки снова происходит в четыре этапа: 
извлекаем длину строки L
− заполняем вспомогательный массив byByte[] длиной 4*L
− с помощью класса Decoder перемещаем данные из массива by-
Byte[] в символьный массив charData[]; 
− перемещаем данные из массива charData[] в строку. 
5.3. П
ОИСК В ГРАФАХ
 
Основой любого алгоритма поиска нужной вершины в графе является 
перебор вершин, организованный так, чтобы каждая вершина просматривает-
ся не более одного раза. Критериями эффективности любого алгоритма и, в 
частности, алгоритмов поиска являются: 
− легкая читаемость алгоритма; 
15 / 23


154 
− выполнение требования однократности анализа любого ребра или 
вершины. 
5.3.1. П
ОИСК В ГЛУБИНУ
 
Поставим задачу поиска кратчайшего пути между двумя вершинами 
неориентированного графа. Очевидно, что речь идет об алгоритме, реали-
зующем некоторый перебор возможных путей. Основной проблемой являет-
ся определение эффективного порядка перебора. Одним из подходов к реше-
нию этой задачи является так называемый поиск в глубину (depth first search). 
Общая идея этого метода заключается в следующем: начиная поиск с какой-
то вершины n, просматриваем список инцидентных ей ребер и, если находит-
ся соседняя непосещенная вершина, то переходим в нее, далее продолжаем 
алгоритм из этой вершины. Естественно, мы должны отмечать каждую посе-
щенную вершину, присваивая полю Node[n].visit значение true

Download 1.85 Mb.

Do'stlaringiz bilan baham:
1   ...   74   75   76   77   78   79   80   81   ...   111




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling