Skip to content

Commit 00f73e0

Browse files
committed
3.2.25 Finished
1 parent 34630e7 commit 00f73e0

File tree

3 files changed

+66
-7
lines changed

3 files changed

+66
-7
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>netcoreapp3.0</TargetFramework>
6+
<RootNamespace>_3._2._35</RootNamespace>
7+
</PropertyGroup>
8+
9+
</Project>

3 Searching/3.2/3.2.35/Program.cs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
namespace _3._2._35
2+
{
3+
class Program
4+
{
5+
static void Main(string[] args)
6+
{
7+
// 根据书中已经给出的归纳关系式(中文版P255 / 英文版P403):
8+
//
9+
// CN = N - 1 + (C0 + C(N - 1)) / N + (C1 + C(N - 2)) / N + ... + (C(N - 1) + C0) / N
10+
//
11+
// 整理得:
12+
//
13+
// CN = N - 1 + (C0 + C1 + ... + C(N - 1))/ N + (C(N - 1) + ... + C1 + C0) / N
14+
//
15+
// 这和快速排序的式子基本一致,只是 N + 1 变成了 N - 1。
16+
17+
// 遵循相同的推导过程,我们可以获得类似的结果,两边同乘以 N:
18+
//
19+
// NCN = N(N - 1) + 2(C0 + C1 + ... + C(N - 1))
20+
//
21+
// 用 N + 1 时的等式减去该式得:
22+
//
23+
// (N + 1)C(N + 1) - NCN = 2N + 2CN
24+
// (N + 1)C(N + 1) = 2N + (N + 2)CN
25+
// C(N + 1) / (N + 2) = 2N / [(N + 1)(N + 2)] + CN / (N + 1)
26+
//
27+
// 令 TN = CN / (N + 1),得到:
28+
//
29+
// T(N + 1) = 2N / [(N + 1)(N + 2)]+TN
30+
// T(N + 1)-T(N) = 2N / [(N + 1)(N + 2)]
31+
//
32+
// 归纳得:
33+
//
34+
// TN = 2Σ[(i - 1) / i(i + 1)]
35+
// CN = 2(N + 1)Σ[(i - 1) / i(i + 1))]
36+
// CN = 2(N + 1)Σ{(i - 1)[(1 / i) - 1 / (i + 1)]}
37+
// CN = 2(N + 1)(HN - 1) - 2(N - 1)
38+
// CN ~ 2(N + 1)(lnN + γ) - 4N
39+
//
40+
// 于是根据书中的公式,平均成本为 1 + CN / N ~ 2lnN + 2γ - 3 。
41+
}
42+
}
43+
}

Algorithms 4th Edition.sln

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1009,19 +1009,21 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "3.2.26", "3 Searching\3.2\3
10091009
EndProject
10101010
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "3.2.27", "3 Searching\3.2\3.2.27\3.2.27.csproj", "{30EAE388-2751-4E2A-8FA3-DE3DFF0429E9}"
10111011
EndProject
1012-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "3.2.28", "3 Searching\3.2\3.2.28\3.2.28.csproj", "{B72FC2E0-9428-414E-8582-AFF39E461C02}"
1012+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "3.2.28", "3 Searching\3.2\3.2.28\3.2.28.csproj", "{B72FC2E0-9428-414E-8582-AFF39E461C02}"
10131013
EndProject
1014-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "3.2.29", "3 Searching\3.2\3.2.29\3.2.29.csproj", "{0AF0A0B5-10F0-4B14-858C-9F88F5BEF13A}"
1014+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "3.2.29", "3 Searching\3.2\3.2.29\3.2.29.csproj", "{0AF0A0B5-10F0-4B14-858C-9F88F5BEF13A}"
10151015
EndProject
1016-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "3.2.30", "3 Searching\3.2\3.2.30\3.2.30.csproj", "{41058D4A-FF6D-4197-AE28-4B82FDE23FC9}"
1016+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "3.2.30", "3 Searching\3.2\3.2.30\3.2.30.csproj", "{41058D4A-FF6D-4197-AE28-4B82FDE23FC9}"
10171017
EndProject
1018-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "3.2.31", "3 Searching\3.2\3.2.31\3.2.31.csproj", "{72A97447-5CBE-43D0-A719-A31F96F978B7}"
1018+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "3.2.31", "3 Searching\3.2\3.2.31\3.2.31.csproj", "{72A97447-5CBE-43D0-A719-A31F96F978B7}"
10191019
EndProject
1020-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "3.2.32", "3 Searching\3.2\3.2.32\3.2.32.csproj", "{E74C74C3-8847-4EA5-97E5-80BCB43CC58E}"
1020+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "3.2.32", "3 Searching\3.2\3.2.32\3.2.32.csproj", "{E74C74C3-8847-4EA5-97E5-80BCB43CC58E}"
10211021
EndProject
1022-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "3.2.33", "3 Searching\3.2\3.2.33\3.2.33.csproj", "{C44A238D-56F4-4316-954E-33D3FD73093C}"
1022+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "3.2.33", "3 Searching\3.2\3.2.33\3.2.33.csproj", "{C44A238D-56F4-4316-954E-33D3FD73093C}"
10231023
EndProject
1024-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "3.2.34", "3 Searching\3.2\3.2.34\3.2.34.csproj", "{E2CFD797-005D-41F2-AFCF-212FB5352432}"
1024+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "3.2.34", "3 Searching\3.2\3.2.34\3.2.34.csproj", "{E2CFD797-005D-41F2-AFCF-212FB5352432}"
1025+
EndProject
1026+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "3.2.35", "3 Searching\3.2\3.2.35\3.2.35.csproj", "{97B6B0DD-EB46-45C3-A917-47D05783243C}"
10251027
EndProject
10261028
Global
10271029
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -2805,6 +2807,10 @@ Global
28052807
{E2CFD797-005D-41F2-AFCF-212FB5352432}.Debug|Any CPU.Build.0 = Debug|Any CPU
28062808
{E2CFD797-005D-41F2-AFCF-212FB5352432}.Release|Any CPU.ActiveCfg = Release|Any CPU
28072809
{E2CFD797-005D-41F2-AFCF-212FB5352432}.Release|Any CPU.Build.0 = Release|Any CPU
2810+
{97B6B0DD-EB46-45C3-A917-47D05783243C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
2811+
{97B6B0DD-EB46-45C3-A917-47D05783243C}.Debug|Any CPU.Build.0 = Debug|Any CPU
2812+
{97B6B0DD-EB46-45C3-A917-47D05783243C}.Release|Any CPU.ActiveCfg = Release|Any CPU
2813+
{97B6B0DD-EB46-45C3-A917-47D05783243C}.Release|Any CPU.Build.0 = Release|Any CPU
28082814
EndGlobalSection
28092815
GlobalSection(SolutionProperties) = preSolution
28102816
HideSolutionNode = FALSE
@@ -3312,6 +3318,7 @@ Global
33123318
{E74C74C3-8847-4EA5-97E5-80BCB43CC58E} = {136F3860-08E9-4C37-BC04-679085D442B4}
33133319
{C44A238D-56F4-4316-954E-33D3FD73093C} = {136F3860-08E9-4C37-BC04-679085D442B4}
33143320
{E2CFD797-005D-41F2-AFCF-212FB5352432} = {136F3860-08E9-4C37-BC04-679085D442B4}
3321+
{97B6B0DD-EB46-45C3-A917-47D05783243C} = {136F3860-08E9-4C37-BC04-679085D442B4}
33153322
EndGlobalSection
33163323
GlobalSection(ExtensibilityGlobals) = postSolution
33173324
SolutionGuid = {EE55CF8D-6F35-464D-B95B-ED85644AE41C}

0 commit comments

Comments
 (0)