ﻣﻬﻠﺖ ﺗﺤﻮﻳﻞ ﺗﻤﺮﻳﻦ ﺳﺮﯼ اول ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ دوﺷﻨﺒﻪ 23ﻣﻬﺮ 1386 ﺑﺮاﯼ هﺮ ﻳﮏ از ﻣﺴﺎﺋﻞ زﻳﺮ ،ﻗﺒﻞ از رﺳﻢ ﻓﻠﻮﭼﺎرت ،ﮔﺎم هﺎﯼ روش ﭘﻴﺸﻨﻬﺎدﯼ ﺧﻮد را ﻣﺨﺘﺼﺮًا ﺗﻮﺿﻴﺢ دهﻴﺪ .ﻣﯽ ﺗﻮاﻧﻴﺪ ﻓﻠﻮﭼﺎرت هﺎﯼ ﺧﻮد را ﺑﻪ ﮐﻤﮏ ﺑﺮﻧﺎﻣﻪ اﯼ ﮐﻪ در ﺳﺎﻳﺖ و در ﻗﺴﻤﺖ Resourcesﮔﺬاﺷﺘﻪ ﺷﺪﻩ اﺳﺖ 1رﺳﻢ ﮐﻨﻴﺪ . ﻣﺴﺎﻟﻪ اول . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . اﻋﺪاد ﻣﺘﻘﺎرن ﻋﺪد ﻃﺒﻴﻌﯽ nرا ﻣﺘﻘﺎرن 2ﮔﻮﻳﻴﻢ ،هﺮﮔﺎﻩ ﺑﺎ ﻣﻘﻠﻮب ﺧﻮد ،ﮐﻪ از ﻣﻌﮑﻮس ﻧﻤﻮدن ﺗﺮﺗﻴﺐ رﻗﻢ هﺎﻳﺶ ﺣﺎﺻﻞ ﻣﯽ ﺷﻮد ،ﺑﺮاﺑﺮ ﺑﺎﺷﺪ .ﺑﺮاﯼ ﻣﺜﺎل : 123 Æ 321 ﻧﺎﻣﺘﻘﺎرن ﻣﺘﻘﺎرن 42324Æ 42324 ﻣﺘﻘﺎرن 86100168 Æ 86100168 روﺷﯽ ﺑﺮاﯼ ﺗﻌﻴﻴﻦ ﻣﺘﻘﺎرن ﺑﻮدن ورودﯼ دﻟﺨﻮاﻩ nﭘﻴﺸﻨﻬﺎد ﮐﻨﻴﺪ. ﻣﺴﺎﻟﻪ دوم . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ﻣﺮﺗﺐ ﺳﺎزﯼ درﺟﯽ )(Insertion Sort اﻟﮕﻮرﻳﺘﻢ ﻣﺮﺗﺐ ﺳﺎزﯼ درﺟﯽ ﺑﺮ اﺳﺎس ﻣﺮﺗﺐ ﺳﺎزﻳﻬﺎﻳﯽ ﮐﻪ ﻣﻌﻤﻮﻻ ﺧﻮد ﻣﺎ ﺑﺼﻮرت دﺳﺘﯽ اﻧﺠﺎم ﻣﯽدﻳﻢ ﻃﺮاﺣﯽ ﺷﺪﻩ اﺳﺖ. ﻣﺮاﺣﻞ اﻳﻦ اﻟﮕﻮرﻳﺘﻢ را ﺑﺎ ﻣﺜﺎﻟﯽ ﺗﻮﺿﻴﺢ ﻣﯽ دهﻴﻢ.ﻓﺮض ﮐﻨﻴﺪ ﺁراﻳﻪ ورودﯼ ﭼﻨﻴﻦ ﺑﺎﺷﺪ: 3 1 6 4 2 5 در هﺮ ﻣﺮﺣﻠﻪ ﺁراﻳﻪ را ﺑﻪ دو ﻗﺴﻤﺖ ﻣﺮﺗﺐ ﺷﺪﻩ و ﻣﺮﺗﺐ ﻧﺸﺪﻩ ﺗﻘﺴﻴﻢ ﻣﯽ ﮐﻨﻴﻢ وﺑﺎ ﺑﺮرﺳﯽ اوﻟﻴﻦ ﻋﻨﺼﺮ از ﺁراﻳﻪ ﻧﺎﻣﺮﺗﺐ را در ﺁراﻳﻪ ﻣﺮﺗﺐ ﺟﺎﯼ ﻣﯽ دهﻴﻢ .اﻳﻦ ﮐﺎر را ﺗﺎ ﻣﺮﺗﺐ ﺷﺪن ﮐﻞ ﺁراﻳﻪ اداﻣﻪ ﻣﯽ دهﻴﻢ .ﻣﺮاﺣﻞ ﮐﺎر در ﺷﮑﻞ زﻳﺮ ﺁوردﻩ ﺷﺪﻩ اﺳﺖ: 1 http://ce.sharif.edu/courses/86-87/1/ce153/resources/root/wptrial.exe Palindrome 2 ﺑﺮاﯼ ﻣﺜﺎل در ﮔﺎم ﭘﻨﺠﻢ ،ﻋﺪد 3اوﻟﻴﻦ ﻋﻀﻮ ﺁراﻳﻪ ﻧﺎﻣﺮﺗﺐ اﺳﺖ .اﻳﻦ ﻋﺪد را در ﻳﮏ ﻣﺘﻐﻴﺮ ذﺧﻴﺮﻩ ﻣﯽ ﮐﻨﻴﻢ .ﭼﻮن 6از 3 ﺑﻴﺸﺘﺮ اﺳﺖ ،ﺑﻪ ﺳﻤﺖ راﺳﺖ ﻣﯽ رود .ﺳﭙﺲ 3را ﺑﺎ ﻋﻀﻮ ﺑﻌﺪ ﻳﻌﻨﯽ 5ﻣﻘﺎﻳﺴﻪ ﻣﯽ ﮐﻨﻴﻢ 5 .از 3ﺑﺰﮔﺘﺮ اﺳﺖ و ﺁن هﻢ ﻳﮏ ﺑﺎر ﺑﻪ راﺳﺖ ﻣﯽ رود 4 .هﻢ هﻤﻴﻦ ﻃﻮر .وﻟﯽ 2از 3ﮐﻮﭼﮑﺘﺮ اﺳﺖ .در اﻳﻨﺠﺎ ﻋﺪد 3در ﺟﻠﻮﯼ 2ﺟﺎﯼ ﻣﯽ ﮔﻴﺮد. اﮔﻪ nﺗﻌﺪاد ﻋﻨﺎﺻﺮ را ﻣﺸﺨﺺ ﮐﻨﺪ ،اﻳﻦ روش n-1ﻣﺮﺣﻠﻪ را ﺑﺮاﯼ ﻣﺮﺗﺐ ﮐﺮدن ﻃﯽ ﻣﯽﮐﻨﺪ .ﺑﻌﺪ از اﺗﻤﺎم ﻣﺮﺣﻠﻪ iام ﻣﻄﻤﺌﻨﺎ i+1ﻋﻨﺼﺮ اول ﺑﻪ ﺻﻮرت ﻣﺮﺗﺐ ﺷﺪﻩ هﺴﺘﺪ. ﻓﻠﻮﭼﺎرﺗﯽ ﺑﺮاﯼ اﻳﻦ اﻟﮕﻮرﻳﺘﻢ ﻣﺮﺗﺐ ﺳﺎزﯼ رﺳﻢ ﮐﻨﻴﺪ. ﻣﺴﺎﻟﻪ ﺳﻮم . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ﺟﺴﺘﺠﻮﯼ دودوﻳﯽ 3ﺑﺮاﯼ ﺁراﻳﻪ هﺎﯼ ﻣﺮﺗﺐ ﻣﯽ ﺧﻮاهﻴﻢ در ﻣﻴﺎن ﺁراﻳﻪ اﯼ ﻣﺮﺗﺐ از اﻋﺪاد)ﺑﻪ ﻃﻮر ﺻﻌﻮدﯼ( ،ﺑ ﻪ دﻧﺒ ﺎل ﻋ ﺪد دﻟﺨ ﻮاﻩ xﺑﮕ ﺮدﻳﻢ .اﮔ ﺮ ﻋ ﺪد ﻣ ﻮرد ﻧﻈ ﺮ در ﺁراﻳﻪ ﻣﻮﺟﻮد ﺑﻮد ،ﻣﮑﺎن ﺁن ﻋﺪد در ﺁراﻳﻪ و ﮔﺮﻧﻪ ﭘﻴﻐﺎم ” “Not Foundﭼﺎپ ﺷﻮد .اﮔﺮ ﻋ ﺪد ﻣ ﻮرد ﻧﻈ ﺮ ﭼﻨ ﺪﻳﻦ ﺑ ﺎر در ﺁراﻳ ﻪ ﺗﮑﺮار ﺷﺪﻩ ﺑﺎﺷﺪ ،ﮐﺎﻓﯽ اﺳﺖ ﻣﮑﺎن ﻳﮑﯽ از اﻳﻦ ﻣﻘﺎدﻳﺮ ﭼﺎپ ﺷﻮد.ﺑﺮاﯼ اﻳﻦ ﮐﺎر از روش ﺟﺴﺘﺠﻮﯼ دودوﻳﯽ اﺳﺘﻔﺎدﻩ ﮐﻨﻴﺪ : در اﻳﻦ روش ﻋﻨﺼﺮ ﻣﻮرد ﻧﻈﺮ ﺑﺎ ﻋﻨﺼﺮ وﺳﻂ ﺁراﻳﻪ ﻣﻘﺎﻳﺴﻪ ﻣﯽ ﺷﻮد.اﮔﺮ ﺑﺮاﺑﺮ ﺑﻮد،ﺟﺴﺘﺠﻮ ﺧﺎﺗﻤﻪ ﻣﯽ ﻳﺎﺑﺪ.اﮔﺮ ﻋﻨﺼﺮ ﻣ ﻮرد ﺟﺴﺘﺠﻮ از ﻋﻨﺼﺮ وﺳﻂ ﺑﺰرﮔﺘﺮ ﻳﺎ ﮐﻮﭼﮑﺘﺮ ﺑﻮد ،ﺁراﻳﻪ ﺑﻪ دو ﺑﺨﺶ ﺗﻘﺴﻴﻢ ﻣﯽ ﺷﻮد: -1ﺑﺨﺸﯽ ﮐﻪ ﻋﻨﺎﺻﺮ ﺁن ﺑﺰرﮔﺘﺮ از ﻋﻨﺼﺮ ﻣﻮرد ﺟﺴﺘﺠﻮ هﺴﺘﻨﺪ. -2ﺑﺨﺸﯽ ﮐﻪ ﻋﻨﺎﺻﺮ ﺁن ﮐﻮﭼﮑﺘﺮ از ﻋﻨﺎﺻﺮ ﻣﻮرد ﺟﺴﺘﺠﻮ هﺴﺘﻨﺪ. اﮔﺮ ﻋﻨﺼﺮ ﻣﻮرد ﺟﺴﺘﺠﻮ از ﻋﻨﺼﺮ وﺳﻂ ﺑﺰرﮔﺘﺮ ﺑﻮد ،ﺟﺴﺘﺠﻮ در ﺑﺨﺶ ﭘ ﺎﻳﻴﻨﯽ ﺁراﻳ ﻪ اﻧﺠ ﺎم ﻣ ﯽ ﮔﻴ ﺮد و در ﻏﻴ ﺮ اﻳﻨﺼ ﻮرت در ﺑﺨﺶ ﺑﺎﻻﻳﯽ ﺁراﻳﻪ .اﻳﻦ روﻧﺪ ﺗﺎ زﻣﺎﻧﯽ اداﻣﻪ ﻣﯽ ﻳﺎﺑﺪ ﮐﻪ ﻋﻨﺼﺮ ﻣﻮرد ﻧﻈﺮ ﻳﺎﻓ ﺖ ﺷ ﻮد و ﻳ ﺎ ﻣﻄﻤ ﺌﻦ ﺷ ﻮﻳﻢ ﮐ ﻪ ﻋﻨﺼ ﺮ ﻣ ﻮرد ﻧﻈﺮ در ﺁراﻳﻪ ﻣﻮﺟﻮد ﻧﻴﺴﺖ. راهﻨﻤﺎﻳﯽ :دو ﻣﺘﻐﻴﺮ first , lastرا ﺑﺮاﯼ ﻧﮕﻬﺪارﯼ ﻣﮑﺎن اﺑﺘﺪا و اﻧﺘﻬﺎﯼ ﺁراﻳﻪ ﻣﻮرد ﺟﺴﺘﺠﻮ در هﺮ ﮔﺎم در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ. Binary Search 3
© Copyright 2025 Paperzz