سورس الگوریتم هافمن huffman با زبان سی شارپ
در این پست سورس الگوریتم هافمن Huffman با زبان سی شارپ را برای شما کاربران عزیز آماده کرده ایم که در ادامه می توانید قسمت های از سورس کد برنامه را مشاهده کنید.
در علوم کامپیوتر، کدگذاری هافمن یک الگوریتم کدگذاری برای فشرده سازی بی اتلاف اطلاعات می باشد. در این کدگذاری، از روشی خاصی به نام کدهای بدون پیشوند استفاده می شود. شاید شنیده باشید که کدگذاری هافمن برای کد کردن نماد به نماد بهینه است، اما در برخی موارد، کارایی آن بیش از مقدار واقعی از سوی کاربران پنداشته می شود.
تکه کد سورس الگوریتم هافمن huffman با زبان سی شارپ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | <span style="color: #ff0000;"><strong>جهت دریافت کد کامل این برنامه از قسمت خرید محصول اقدام کنید</strong></span> void huffman(string text) { treeView1.Nodes.Clear(); codeTable.Items.Clear(); int[] charList = new int[2000]; map_table = new ArrayList(); for (int i = 0; i < text.Length; i++) charList[(int)char.Parse(text.Substring(i, 1))]++; for (int i = 0; i < 2000; i++) if (charList[i] > 0) { TreeNode treeNode = new TreeNode(charList[i].ToString()); treeNode.ToolTipText = ((char)i).ToString(); map_table.Add(treeNode); } usedCharCount = map_table.Count; for (int j = 1; j < usedCharCount; j++) { TreeNode min1 = null, min2 = null; for (int i = 0; i < map_table.Count; i++) { TreeNode currentNode = (TreeNode)map_table[i]; if (min1 != null && min2 != null) { if (int.Parse(min1.Text) > int.Parse(min2.Text)) { TreeNode temp = min1; min1 = min2; min2 = temp; } if (currentNode.Tag == null) { if (int.Parse(currentNode.Text) < int.Parse(min1.Text)) { min2 = min1; min1 = currentNode; } else if (int.Parse(currentNode.Text) < int.Parse(min2.Text)) min2 = currentNode; } } else { if (currentNode.Tag == null) { if (min1 == null) min1 = currentNode; else min2 = currentNode; } } } TreeNode[] childrenNodes = new TreeNode[] { min1, min2 }; addNode.ToolTipText = min1.ToolTipText + "_" + min2.ToolTipText; updateNodeFlag(addNode.Nodes[1], "1"); updateNodeFlag(addNode.Nodes[0], "0"); map_table.Add(addNode); min1.Tag = 1; min2.Tag = 1; } treeView1.Nodes.Add((TreeNode) map_table[map_table.Count-1]); treeView1.ExpandAll(); } |
هیچ نظری ثبت نشده است