From 5c89d7c8fb0939f69a1a9492a14e09527ec3137d Mon Sep 17 00:00:00 2001 From: Roland W-H Date: Fri, 18 Mar 2022 10:44:20 +0000 Subject: [PATCH] initial commit --- .gitattributes | 63 ++++++++ .gitignore | 377 +++++++++++++++++++++++++++++++++++++++++++++++ LICENSE | 21 +++ src/bsrch.c | 32 ++++ src/bsrch.h | 5 + src/ceesort.c | 30 ++++ trace_table.xlsx | Bin 0 -> 12582 bytes 7 files changed, 528 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 src/bsrch.c create mode 100644 src/bsrch.h create mode 100644 src/ceesort.c create mode 100644 trace_table.xlsx diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1ff0c42 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,63 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +#*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b3d3f09 --- /dev/null +++ b/.gitignore @@ -0,0 +1,377 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Oo]ut/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio Code cache/options directory +.vscode/* +.vscode/settings.json +.vscode/tasks.json +.vscode/launch.json +.vscode/extensions.json +.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..1d3a557 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Roland Weir-Howell + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/src/bsrch.c b/src/bsrch.c new file mode 100644 index 0000000..736dbf4 --- /dev/null +++ b/src/bsrch.c @@ -0,0 +1,32 @@ +#include "bsrch.h" + +#include +#include +#include + + +int bsrch(int target, int* arr, size_t n) +{ + bool found = false; + int start = 0, end = n - 1; + if (arr[start] > target || arr[end] < target) return -1; + int mid = round((start + end) / (double)2); + + while (!found) + { + if (arr[mid] == target) found = true; + if (start == end && !found) return -1; + else if (arr[mid] < target) + { + start = mid + 1; + mid = roundf((start + end) / (float)2); + } + else if (arr[mid] > target) + { + end = mid - 1; + mid = roundf((start + end) / (float)2); + } + } + + return mid; +} diff --git a/src/bsrch.h b/src/bsrch.h new file mode 100644 index 0000000..f464723 --- /dev/null +++ b/src/bsrch.h @@ -0,0 +1,5 @@ +#pragma once +#include + + +int bsrch(int target, int* arr, size_t n); diff --git a/src/ceesort.c b/src/ceesort.c new file mode 100644 index 0000000..395fb53 --- /dev/null +++ b/src/ceesort.c @@ -0,0 +1,30 @@ +#include "bsrch.h" + +#include +#include + + +int main(int argc, char** argv) +{ + int* arr = malloc((argc - 1) * sizeof(int)); + for (int i = 1; i < argc; i++) + { + arr[i - 1] = atoi(argv[i]); + } + + int target; + printf("Enter number to search for: "); + scanf("%d", &target); + int result = bsrch(target, arr, argc - 1); + + if (result != -1) + { + printf("Value found at index: %d\n", result); + } + else + { + printf("Value not found\n"); + } + + return 0; +} diff --git a/trace_table.xlsx b/trace_table.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..584dec1926c77b6f287eae228b98571f84d5dc92 GIT binary patch literal 12582 zcmeHN1y@|@vTYoKJHg%E-5r8^a1GkHgy8P(5}csH2@Zka5ZpZw+}&SK=H8bX?z~^{ z?&-D8S!Z?E?(Xl@uBvZWDak=VVgR54umAvn1R(4f7VZlM06;J7+UH zX9G14dow3JMt55q;yg%j>Kp(#==1+Q{vWSEx!Qo;S7wwp%{?LUc8#9S+)`Tb5XL?% zxH~XP!cYn0x7mJQSKW-U)G;Z-`zbVxzrQulpVI8Afo>=}qU%v(YEFCpVY! z`%MSPe3G(&NI+a*UU^15zmvdzA;Gc~80^V(I zOQ%6^$Enf@d!DI^PfZJa7e?vt88ICdNO`|0V4IW0wBqub0QaQS4?$2tJm62KC{V1yNE)eJn{ztGLkIvno6Z8XaWJ=LxIvIl-x zm=h{0c9gfwxSKn!<;9@#boCp0(a^34_3j)?7(w^rU>wpdglB)-2}0Z%n*ZpNSsD1@ zJ<7%az}GueIe&_^raae1ODY7t+EhTxiiEG!kcOzjh~{-ga4^eseR5Pa&?WKuT>#2} z3A4D~dAwO3KHp3kVyG#Dy0Fi?8^^g^mn{~1f+WQs6Z8^|kfAUuj+d-{r1^CD=Y9Ip zcVnV+)*G*_;S7kpA-fHa6~HIElnIy$al|VW01FGTf}tM`BVv(hw1|GLag)!+AEfQ$ z9%;)wCzL-3BtJt-o&fVvV`mDIVB@c4*n!_iBrS?Lfb)lv&Cq&`9TN(gr4o{IFiD!a z)wGgqTH%=YRV008tY=u|4S2ke+7_NX1~U1^90YIc0VKz3>*hD!?>raK16hEW2?FZ$ zm~G$$c0ca)M&8U>k_oT(a@<>N#&>-K_Yx^*o?y*G?#5J)Vj1L=v~)J8-oB5o7Lj&& zR*1P!dUzIztD7>?LD>!-`gz-z>K7mBTH2yA;k$i)0M6Cnpa&3BUVuEyEU z%Wb6Iv@|mjyJqjTRGIjqpOLZbh)a<7j890)(n7RQ1nRXF6}^#h@Im~{dJ~tUqW0`( zdxsC2t&geipN!__+xMkiuv@llI9f}DnW8QUj_Iny<78|?e{TJ7It|OtxY;r`jU=t<=kVw&v{-(ZPyv>j73K6h z3Z)G5{EzJ3`JU8%z2z2JdhW?_f@0a437Hkk))cmKV|Ce-eX)joQ_8jV%{Wu+0h!!m zWQ^J0?RV0--S{UFMHdlt`#4p(YMp?|79JbBcRSuhk3@Pv6_>huvT=Gm+G){=Gq@-3 zO6{yMu*5nz*qe5$40jQKf}91ds!d=feruJpb zKHl$42{!GQjo#@5)}`5mR3q9g=^r2A|A~%%f{7{TAR0DU(*J}=>4G8qhF1km$Q0Qm}d;4XF@JQ)S z=uLw0{q)%w+&^!qDPD)<7m+ zGa4*{yQqPuey_#NCjLNHx@BCpQy%RJ_;e~y$wj3N1ydQNbcwOfED82GjaH&9JCA7f z7>4InWTA@;o%%TquTy}X`SI$TXj$M$uoE62ms7Q_+LbGsw3|~`1-+Eu^ZJ0Sr3{1a zo{On#`s74}DP|n^D5;D@6k}lZQMXcAlHrHkIsLN*ed2V@DSw|@RKCdx^8J7WHQ;p% zn5rX8XyKyyi>J&7o8j=+@u$wy@x6O~F zw4{T)6E4qf%-mt@LaLgJhB@rj~+LCrbPxcoek!JdpB_rm%XC97}4E_lVA9mz8F>YEAf(-A$3ws&8X6UQQ3hLkp+M45j2proR;w8e z?e@dBKpCs;ea|7c?u5(ywzEASa!Q@u0K6Sphv@UK3gVX&CMN6I1u&xoenxZfMYHMu z2q=Lg4<`x9!6;F*#LTN}^Rm@lUye&iZe(9&93HM*E_i%9s~7QeVRLuu(aCkdpE~uD zXryWOBWE0fxqKj-u~jzhY|nV1ZjVM+c&4Rl`{sHcgJr96}#VN2Olyms$e-Z zL6U#xc!A|tspQyoJ9lNe$@-HEZ%s1+ml!3>Avc(>�eBGgUPeXK;%C% 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 literal 0 HcmV?d00001