diff --git a/.gitignore b/.gitignore index 4d061b2..63ec9e4 100644 --- a/.gitignore +++ b/.gitignore @@ -162,3 +162,7 @@ Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/314d19c9f4445d9e/18_PLUSONE.ipch Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/a71bf0a3ca35e643/18_PLUSONE.ipch Alogrithm/.vs/Alogrithm/v16/TestStore/0/004.testlog Alogrithm/Alogrithm/Debug/18_PlusOne.obj +Alogrithm/.vs/Alogrithm/v16/ipch/AutoPCH/1a1702b241b62b26/19_MYSQRT.ipch +Alogrithm/.vs/Alogrithm/v16/TestStore/0/005.testlog +Alogrithm/Alogrithm/Debug/19_MySqrt.obj +Alogrithm/UnitTest/Debug/UnitTest.tlog/link.16016.delete.1.tlog diff --git a/Alogrithm/.vs/Alogrithm/v16/.suo b/Alogrithm/.vs/Alogrithm/v16/.suo index 83b29f1..81b6608 100644 Binary files a/Alogrithm/.vs/Alogrithm/v16/.suo and b/Alogrithm/.vs/Alogrithm/v16/.suo differ diff --git a/Alogrithm/Alogrithm/Alogrithm.vcxproj b/Alogrithm/Alogrithm/Alogrithm.vcxproj index 80bab78..34d1acd 100644 --- a/Alogrithm/Alogrithm/Alogrithm.vcxproj +++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj @@ -149,6 +149,7 @@ + @@ -169,6 +170,7 @@ + @@ -188,6 +190,7 @@ + diff --git a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters index 459def8..29cb51a 100644 --- a/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters +++ b/Alogrithm/Alogrithm/Alogrithm.vcxproj.filters @@ -78,6 +78,9 @@ 源文件\src + + 源文件\src + @@ -131,6 +134,9 @@ 头文件\include + + 头文件\include + @@ -184,5 +190,8 @@ 资源文件\config + + 资源文件\config + \ No newline at end of file diff --git a/Alogrithm/Alogrithm/config/19_MySqrt.ini b/Alogrithm/Alogrithm/config/19_MySqrt.ini new file mode 100644 index 0000000..920c3c8 --- /dev/null +++ b/Alogrithm/Alogrithm/config/19_MySqrt.ini @@ -0,0 +1,24 @@ +[Test1] +Input=4 +Output=2 +[Test2] +Input=8 +Output=2 +[Test3] +Input=0 +Output=0 +[Test4] +Input=1 +Output=1 +[Test5] +Input=2 +Output=1 +[Test6] +Input=66564 +Output=258 +[Test7] +Input=2147395600 +Output=46340 +[Test8] +Input=2147483647 +Output=46340 \ No newline at end of file diff --git a/Alogrithm/Alogrithm/include/19_MySqrt.h b/Alogrithm/Alogrithm/include/19_MySqrt.h new file mode 100644 index 0000000..a65a5c4 --- /dev/null +++ b/Alogrithm/Alogrithm/include/19_MySqrt.h @@ -0,0 +1,2 @@ +#pragma once +int MySqrt(int x); \ No newline at end of file diff --git a/Alogrithm/Alogrithm/src/19_MySqrt.cpp b/Alogrithm/Alogrithm/src/19_MySqrt.cpp new file mode 100644 index 0000000..cb1fde3 --- /dev/null +++ b/Alogrithm/Alogrithm/src/19_MySqrt.cpp @@ -0,0 +1,25 @@ +#include "../include/19_MySqrt.h" +//Ŀʵ int sqrt(int x) 㲢 x ƽ x ǷǸ +// ڷֻIJ֣Сֽȥ +//˼·ʹöַвңȷ޺мֵмֵƽȻxȽ +// мֵƽxСlowһСΧպҵhighһСΧ +int MySqrt(int x) { + if (x < 2) {//Ϊ0,1ֱӷԭ + return x; + }//ΪһƽһڵĶ0,1⣩СΪx/2 + int low = 1, high = x / 2,mid = 0; //ޣޣмֵ + while (low <= high) //ѭֹޱҽ޴ʱѭ + { + mid = (low + high) / 2; //ȡlowhighмֵmid + if (mid == x / mid) { //жmid*nidxǷȣΪǵ˷дΪmid == x/mid + return mid; //˵ҵֱӷ + } + else if ( mid < x / mid) { //mid*midСx + low = mid + 1; // + } + else { //mid*midx + high = mid - 1; // + } + } //ѭʱlow>highҲ˵ lowƽ>x>highƽСʡȥ + return high; //ԷصhighҪֵ +} \ No newline at end of file diff --git a/Alogrithm/Alogrithm/src/main.cpp b/Alogrithm/Alogrithm/src/main.cpp index 14b0731..cfb0fd0 100644 --- a/Alogrithm/Alogrithm/src/main.cpp +++ b/Alogrithm/Alogrithm/src/main.cpp @@ -1,8 +1,8 @@ #include - +#include "../include/19_MySqrt.h" int main() { - + printf("%d\n", MySqrt(9)); } diff --git a/Alogrithm/UnitTest/UnitTest.cpp b/Alogrithm/UnitTest/UnitTest.cpp index 302c323..191a3c8 100644 --- a/Alogrithm/UnitTest/UnitTest.cpp +++ b/Alogrithm/UnitTest/UnitTest.cpp @@ -19,7 +19,7 @@ using namespace Microsoft::VisualStudio::CppUnitTestFramework; #define FileName_15 "../Alogrithm/config/15_WordPattern.ini" #define FileName_16 "../Alogrithm/config/16_ReverseBits.ini" #define FileName_18 "../Alogrithm/config/18_PlusOne.ini" - +#define FileName_19 "../Alogrithm/config/19_MySqrt.ini" namespace UnitTest { @@ -333,4 +333,19 @@ namespace UnitTest } } }; + TEST_CLASS(UnitTest_19) + { + TEST_METHOD(TestMethode1) + { + char Section_Name[100][10] = { 0 }; + int Section_Count = CalcCount(100, Section_Name, FileName_19); + CString input,output; + for (int i = 0; i < Section_Count; i++) { + GetPrivateProfileString(Section_Name[i], "Input", " ", input.GetBuffer(100), 100, FileName_19); + GetPrivateProfileString(Section_Name[i], "Output", " ", output.GetBuffer(100), 100, FileName_19); + int nReal = MySqrt(_ttoi(input)); + Assert::AreEqual(nReal, _ttoi(output)); + } + } + }; } diff --git a/Alogrithm/UnitTest/UnitTest.vcxproj b/Alogrithm/UnitTest/UnitTest.vcxproj index 0ea3f5e..9e06df7 100644 --- a/Alogrithm/UnitTest/UnitTest.vcxproj +++ b/Alogrithm/UnitTest/UnitTest.vcxproj @@ -103,7 +103,7 @@ Windows $(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) DebugFull - ../Alogrithm/Debug/1_ContainsNearbyDuplicate.obj;../Alogrithm/Debug/2_ExcelSheetColumnTitle.obj;../Alogrithm/Debug/3_bool IsUgly.obj;../Alogrithm/Debug/4_IsPalindrome.obj;../Alogrithm/Debug/5_MinDepth.obj;../Alogrithm/Debug/6_ContainsDuplicate.obj;../Alogrithm/Debug/7_MaxDepth.obj;../Alogrithm/Debug/8_HammingWeight.obj;../Alogrithm/Debug/9_AddBinary.obj;../Alogrithm/Debug/10_BinaryTreePaths.obj;../Alogrithm/Debug/11_CanWinNim.obj;../Alogrithm/Debug/12_IsValid.obj;../Alogrithm/Debug/13_MyAtoi.obj;../Alogrithm/Debug/14_SingleNumber.obj;../Alogrithm/Debug/15_WordPattern.obj;../Alogrithm/Debug/16_ReverseBits.obj;../Alogrithm/Debug/18_PlusOne.obj;%(AdditionalDependencies) + ../Alogrithm/Debug/1_ContainsNearbyDuplicate.obj;../Alogrithm/Debug/2_ExcelSheetColumnTitle.obj;../Alogrithm/Debug/3_bool IsUgly.obj;../Alogrithm/Debug/4_IsPalindrome.obj;../Alogrithm/Debug/5_MinDepth.obj;../Alogrithm/Debug/6_ContainsDuplicate.obj;../Alogrithm/Debug/7_MaxDepth.obj;../Alogrithm/Debug/8_HammingWeight.obj;../Alogrithm/Debug/9_AddBinary.obj;../Alogrithm/Debug/10_BinaryTreePaths.obj;../Alogrithm/Debug/11_CanWinNim.obj;../Alogrithm/Debug/12_IsValid.obj;../Alogrithm/Debug/13_MyAtoi.obj;../Alogrithm/Debug/14_SingleNumber.obj;../Alogrithm/Debug/15_WordPattern.obj;../Alogrithm/Debug/16_ReverseBits.obj;../Alogrithm/Debug/18_PlusOne.obj;../Alogrithm/Debug/19_MySqrt.obj;%(AdditionalDependencies) diff --git a/Alogrithm/UnitTest/pch.h b/Alogrithm/UnitTest/pch.h index e008b78..87d221d 100644 --- a/Alogrithm/UnitTest/pch.h +++ b/Alogrithm/UnitTest/pch.h @@ -30,6 +30,7 @@ #include"../Alogrithm/include/15_WordPattern.h" #include"../Alogrithm/include/16_ReverseBits.h" #include"../Alogrithm/include/18_PlusOne.h" +#include"../Alogrithm/include/19_MySqrt.h" int CalcCount(int n, char(*str)[10],const char *FileName);