From: komutan Date: Tue, 29 Jul 2014 14:52:32 +0000 (+0900) Subject: 微修正 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=4fca9d51cf08513118fe4db82be636c40e2a41c3;p=nmecab%2FNMeCabRepo2.git 微修正 --- diff --git a/src/LibNMeCab/Core/PriorityQueue.cs b/src/LibNMeCab/Core/PriorityQueue.cs index ab2772a..0d6604c 100644 --- a/src/LibNMeCab/Core/PriorityQueue.cs +++ b/src/LibNMeCab/Core/PriorityQueue.cs @@ -1,83 +1,82 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace NMeCab.Core -{ - public class PriorityQueue - where T : IComparable - { - private readonly List list = new List(); - - public int Count - { - get { return this.list.Count; } - } - - public void Clear() - { - this.list.Clear(); - } - - public void Push(T item) - { - int currentPos = this.list.Count; - this.list.Add(default(T)); - - while (currentPos != 0) - { - int parentPos = (currentPos - 1) / 2; - T parent = this.list[parentPos]; - - if (parent.CompareTo(item) <= 0) break; - - this.list[currentPos] = parent; - currentPos = parentPos; - } - this.list[currentPos] = item; - } - - public T Pop() - { - if (this.Count == 0) throw new InvalidOperationException("Empty"); - - T ret = this.list[0]; - this.DeleteRoot(); - return ret; - } - - private void DeleteRoot() - { - int tailPos = this.list.Count - 1; - T current = this.list[tailPos]; // final - this.list.RemoveAt(tailPos); - if (tailPos == 0) return; // empty - tailPos--; - - int currentPos = 0; - while (true) - { - int childPos = currentPos * 2 + 1; // left child - if (childPos > tailPos) break; - T child = this.list[childPos]; - - int wrkPos = childPos + 1; // right child - if (wrkPos <= tailPos) - { - T wrk = this.list[wrkPos]; - if (child.CompareTo(wrk) > 0) - { - childPos = wrkPos; - child = wrk; - } - } - - if (current.CompareTo(child) < 0) break; - - this.list[currentPos] = child; - currentPos = childPos; - } - this.list[currentPos] = current; - } - } -} +using System; +using System.Collections.Generic; +using System.Text; + +namespace NMeCab.Core +{ + public class PriorityQueue + where T : IComparable + { + private readonly List list = new List(); + + public int Count + { + get { return this.list.Count; } + } + + public void Clear() + { + this.list.Clear(); + } + + public void Push(T item) + { + if (item == null) throw new ArgumentNullException("item"); + + int currentPos = this.list.Count; + this.list.Add(default(T)); + + while (currentPos != 0) + { + int parentPos = (currentPos - 1) / 2; + T parent = this.list[parentPos]; + + if (parent.CompareTo(item) <= 0) break; + + this.list[currentPos] = parent; + currentPos = parentPos; + } + this.list[currentPos] = item; + } + + public T Pop() + { + if (this.Count == 0) throw new InvalidOperationException("Empty"); + + T ret = this.list[0]; + + int tailPos = this.list.Count - 1; + T current = this.list[tailPos]; // final + this.list.RemoveAt(tailPos); + if (tailPos == 0) return ret; // empty + tailPos--; + + int currentPos = 0; + while (true) + { + int childPos = currentPos * 2 + 1; // left child + if (childPos > tailPos) break; + T child = this.list[childPos]; + + int wrkPos = childPos + 1; // right child + if (wrkPos <= tailPos) + { + T wrk = this.list[wrkPos]; + if (child.CompareTo(wrk) > 0) + { + childPos = wrkPos; + child = wrk; + } + } + + if (current.CompareTo(child) < 0) break; + + this.list[currentPos] = child; + currentPos = childPos; + } + this.list[currentPos] = current; + + return ret; + } + } +} diff --git a/src/LibNMeCabMMF/LibNMeCabMMF.csproj b/src/LibNMeCabMMF/LibNMeCabMMF.csproj index b25cf0a..548e73a 100644 --- a/src/LibNMeCabMMF/LibNMeCabMMF.csproj +++ b/src/LibNMeCabMMF/LibNMeCabMMF.csproj @@ -122,6 +122,7 @@ Settings.cs + diff --git a/src/NMeCab.sln b/src/NMeCab.sln index 414e3db..5fe6240 100644 --- a/src/NMeCab.sln +++ b/src/NMeCab.sln @@ -1,6 +1,8 @@  -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual C# Express 2010 +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Express 2013 for Windows Desktop +VisualStudioVersion = 12.0.30110.0 +MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibNMeCab", "LibNMeCab\LibNMeCab.csproj", "{3EE156E1-FEDE-4EC5-B64A-3287EC3AB2E3}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsFormsSample", "WindowsFormsSample\WindowsFormsSample.csproj", "{BAB9F854-1C9A-4BF6-83C0-DE3F516547E1}" @@ -11,6 +13,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibNMeCabMMF", "LibNMeCabMM EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PerformanceTestMMF", "PerformanceTestMMF\PerformanceTestMMF.csproj", "{7553B430-D001-419D-B137-3A87FC1DE3C3}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibNMeCabTest", "LibNMeCabTest\LibNMeCabTest.csproj", "{59B69A5D-B54E-4659-9CD6-502FCD7B0881}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -71,6 +75,16 @@ Global {7553B430-D001-419D-B137-3A87FC1DE3C3}.Release|Mixed Platforms.Build.0 = Release|x86 {7553B430-D001-419D-B137-3A87FC1DE3C3}.Release|x86.ActiveCfg = Release|x86 {7553B430-D001-419D-B137-3A87FC1DE3C3}.Release|x86.Build.0 = Release|x86 + {59B69A5D-B54E-4659-9CD6-502FCD7B0881}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {59B69A5D-B54E-4659-9CD6-502FCD7B0881}.Debug|Any CPU.Build.0 = Debug|Any CPU + {59B69A5D-B54E-4659-9CD6-502FCD7B0881}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {59B69A5D-B54E-4659-9CD6-502FCD7B0881}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {59B69A5D-B54E-4659-9CD6-502FCD7B0881}.Debug|x86.ActiveCfg = Debug|Any CPU + {59B69A5D-B54E-4659-9CD6-502FCD7B0881}.Release|Any CPU.ActiveCfg = Release|Any CPU + {59B69A5D-B54E-4659-9CD6-502FCD7B0881}.Release|Any CPU.Build.0 = Release|Any CPU + {59B69A5D-B54E-4659-9CD6-502FCD7B0881}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {59B69A5D-B54E-4659-9CD6-502FCD7B0881}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {59B69A5D-B54E-4659-9CD6-502FCD7B0881}.Release|x86.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE