You are on page 1of 7

‫‪Data Structures‬‬

‫‪Notes for Lecture 18‬‬


‫‪Introduction of Sorting‬‬
‫‪By‬‬
‫‪Samaher Hussein Ali‬‬
‫‪2007-2008‬‬

‫‪Sorting‬‬
‫اﻟﺘﺮﺗﻴﺐ هﻮ ﻋﻤﻠﻴﺔ ﺗﻨﻈﻴﻢ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻌﻨﺎﺻﺮ اﻟﺒﻴﺎﻧﻴﺔ وﻓﻖ ﻗﻴﻤﺔ ﺣﻘﻞ )او ﻣﺠﻤﻮﻋﺔ ﺣﻘﻮل ( ﻳﺴﻤﻰ ﺑﺎﻟﻤﻔﺘﺎح ﺑﺼﻮرة ﺗﺼﺎﻋﺪﻳﺔ او ﺗﻨﺎزﻟﻴﺔ‪.‬‬
‫واﻟﻐﺮض ﻣﻦ اﻟﺘﺮﺗﻴﺐ هﻮ‪-:‬‬
‫‪ .1‬ﻟﺰﻳﺎدة آﻔﺎءة ﺧﻮارزﻣﻴﺎت اﻟﺒﺤﺚ ﻋﻦ ﻋﻨﺼﺮ ﻣﺎ‬
‫‪ .2‬ﻟﺘﺒﺴﻴﻂ ﻣﻌﺎﻟﺠﺔ اﻟﻤﻠﻔﺎت‬
‫‪ .3‬ﻟﺤﻞ ﻣﺸﻜﻠﺔ ﺗﺸﺎﺑﻪ اﻟﻘﻴﻮد‬
‫وﻳﻮﺟﺪ ﻋﺪة ﺗﺼﻨﻴﻔﺎت ﻟﺨﻮارزﻣﻴﺎت اﻟﺘﺮﺗﻴﺐ ﻣﻨﻬﺎ‪-:‬‬
‫‪.1‬ﺧﻮارزﻣﻴﺎت ﺗﻌﺘﻤﺪ اﻟﻤﻘﺎرﻧﺎت‬
‫‪ .2‬ﺧﻮارزﻣﻴﺎت ﺗﻌﺘﻤﺪ اﻟﺘﻮزﻳﻊ‬
‫‪ .3‬ﺧﻮارزﻣﻴﺎت ﺗﻌﺘﻤﺪ ﻋﻠﻰ اﺟﻬﺰة اﻟﺨﺰن وﺗﺘﻀﻤﻦ‪-:‬‬
‫‪Internal Sort Algorithm‬‬ ‫أ‪ .‬ﺧﻮارزﻣﻴﺎت اﻟﺘﺮﺗﻴﺐ اﻟﺪاﺧﻠﻲ‬

‫‪External Sort Algorithm‬‬ ‫ب‪ .‬ﺧﻮارزﻣﻴﺎت اﻟﺘﺮﺗﻴﺐ اﻟﺪاﺧﻠﻲ‬


‫*ﺧﻄﻮات ﻋﻤﻠﻴﺔ اﻟﺘﺮﺗﻴﺐ‬
‫ﺧﻮارزﻣﻴﺎت اﻟﺘﺮﺗﻴﺐ ﺑﻤﺨﺘﻠﻒ اﻧﻮاﻋﻬﺎ ﺗﺘﻀﻤﻦ اﻟﺨﻄﻮات اﻟﺘﺎﻟﻴﺔ‬
‫‪ .1‬ﻗﺮاءة ﺣﻘﻞ اﻟﻤﻔﺘﺎح‬
‫‪ .2‬اﺳﺘﻨﺘﺎج ﻣﻮﻗﻊ اﻟﻌﻨﺼﺮ ﻓﻲ اﻟﺘﺮﺗﻴﺐ اﻟﺠﺪﻳﺪ‬
‫‪ .3‬ﻧﻘﻞ اﻟﻌﻨﺼﺮ اﻟﻰ اﻟﻤﻮﻗﻊ اﻟﺠﺪﻳﺪ‬
‫*اﺳﺲ ﻗﻴﺎس آﻔﺎءة ﺧﻮارزﻣﻴﺎت اﻟﺘﺮﺗﻴﺐ‬
‫‪ .1‬ﻣﻌﺪل ﻣﺎ ﺗﺤﺘﺎﺟﻪ اﻟﺨﻮارزﻣﻴﺔ ﻣﻦ ﻣﻘﺎرﻧﺎت‬
‫‪ .2‬ﻣﻌﺪل ﻣﺎ ﺗﺤﺘﺎﺟﻪ اﻟﺨﻮارزﻣﻴﺔ ﻣﻦ اﻟﻨﻘﻼت او اﻟﺘﺤﺮﻳﻜﺎت‬
‫‪ .3‬ﻣﻌﺪل ﻣﺎ ﺗﺤﺘﺎﺟﻪ اﻟﺨﻮارزﻣﻴﺔ ﻣﻦ اﻟﺘﺒﺪﻳﻼت‬
‫‪ .4‬ﻣﻌﺪل اﻟﺤﺠﻢ اﻟﺘﺨﺰﻳﻨﻲ‬

‫‪Internal Sort Algorithm‬‬

‫ﺧﻮارزﻣﻴﺎت اﻟﺘﺮﺗﻴﺐ اﻟﺪاﺧﻠﻲ وﻧﻘ ﺼﺪ ﺑﺎﻟﺘﺮﺗﻴ ﺐ اﻟ ﺪاﺧﻠﻲ ﺑﺎﻟﺘﺮﺗﻴ ﺐ اﻟ ﺬي ﻳﺤ ﺪث ﻓ ﻲ اﻟ ﺬاآﺮة اﻟﺮﺋﻴ ﺴﻴﺔ ﻟﻠﺤﺎﺳ ﺒﺔ ﻋﻨ ﺪﻣﺎ ﻳﻜ ﻮن ﺣﺠ ﻢ اﻟﺒﻴﺎﻧ ﺎت‬
‫ﻣﻨﺎﺳﺒًﺎ )ﻟﻴﺲ آﺒﻴﺮًا( وﺗﺘﻀﻤﻦ هﺬﻩ اﻟﺨﻮارزﻣﻴﺎت ﺧﻤﺲ ﻃﺮق ‪-:‬‬

‫‪1‬‬
‫‪ .1‬ﻃﺮق اﻟﺘﺮﺗﻴﺐ ﺑﺎﺳﺘﺨﺪام اﻟﺘﺒﺪﻳﻼت‬
‫وﺗﺘﻀﻤﻦ ﻋﺪة ﺧﻮارزﻣﻴﺎت‬
‫‪Bubble Sort (Exchange)Algorithm‬‬ ‫* ﺧﻮارزﻣﻴﺔ اﻟﺘﺮﺗﻴﺐ اﻟﻔﻘﺎﻋﻲ‬
‫‪Quick Sort Algorithm‬‬ ‫* ﺧﻮارزﻣﻴﺔ اﻟﺘﺮﺗﻴﺐ اﻟﺴﺮﻳﻊ‬
‫‪Shell Algorithm‬‬ ‫*ﺧﻮارزﻣﻴﺔ ﺷﻴﻞ‬
‫*ﺧﻮارزﻣﻴﺔ ﺷﻴﻜﺮ‬
‫‪Shaker Algorithm‬‬
‫* ﺧﻮارزﻣﻴﺔ اﻻزاﺣﺔ‬
‫‪Shifting Algorithm‬‬
‫* ﺧﻮارزﻣﻴﺔ ﺑﺎﺗﺠﺮ‬
‫‪Batcher Algorithm‬‬
‫* ﺧﻮارزﻣﻴﺔ اﻟﺘﺮﺗﻴﺐ اﻟﻔﺮدي واﻟﺰوﺟﻲ‬
‫‪Add-Even Sort Algorithm‬‬
‫‪ .2‬ﻃﺮق اﻟﺘﺮﺗﻴﺐ ﺑﺎﻻﺿﺎﻓﺔ‬
‫وﺗﺘﻀﻤﻦ ﻋﺪة ﺧﻮارزﻣﻴﺎت‬
‫* اﻟﺘﺮﺗﻴﺐ ﺑﺎﻻﺿﺎﻓﺔ اﻟﻰ اﻟﻘﺎﺋﻤﺔ‬
‫* اﻟﺘﺮﺗﻴﺐ ﺑﺤﺴﺎب اﻟﻌﻨﻮان‬
‫* اﻟﺘﺮﺗﻴﺐ ﺑﺎﻻﺿﺎﻓﺔ اﻟﺜﻨﺎﺋﻲ‬
‫* اﻟﺘﺮﺗﻴﺐ ﺑﺎﻻﺿﺎﻓﺔ اﻟﺨﻄﻲ‬
‫‪ .3‬ﻃﺮق اﻟﺘﺮﺗﻴﺐ ﺑﺎﺳﺘﺨﺪام اﻟﺪﻣﺞ‬
‫وﺗﺘﻀﻤﻦ ﻋﺪة ﺧﻮارزﻣﻴﺎت‬
‫*ﺧﻮارزﻣﻴﺔ اﻟﺪﻣﺞ اﻟﺒﺴﻴﻂ‬
‫*ﺧﻮارزﻣﻴﺔ اﻟﺪﻣﺞ اﻟﻤﺴﺘﻘﻴﻢ‬
‫*ﺧﻮارزﻣﻴﺔ اﻟﺪﻣﺞ اﻟﻄﺒﻴﻌﻲ‬
‫‪ .4‬ﻃﺮق اﻟﺘﺮﺗﻴﺐ اﻟﺘﻮزﻳﻌﻲ‬
‫وﺗﺘﻀﻤﻦ ﺧﻮارزﻣﻴﺔ واﺣﺪة ﻓﻘﻂ هﻲ‪-:‬‬
‫* ﺧﻮارزﻣﻴﺔ ﺗﺮﺗﻴﺐ اﻻﺳﺎس‬
‫‪Radix Sort Algorithm‬‬
‫‪ .5‬ﻃﺮق اﻟﺘﺮﺗﻴﺐ ﺑﻮاﺳﻄﺔ اﻻﺧﺘﻴﺎر‬
‫وﺗﺘﻀﻤﻦ ﻋﺪة ﺧﻮارزﻣﻴﺎت‪-:‬‬
‫* ﺧﻮارزﻣﻴﺔ اﻻﺧﺘﻴﺎر اﻟﺨﻄﻲ‬
‫*ﺧﻮارزﻣﻴﺔ اﻻﺧﺘﻴﺎر اﻟﺘﺮﺑﻴﻌﻲ‬
‫*ﺧﻮارزﻣﻴﺔ اﻟﺘﺮﺗﻴﺐ اﻟﻜﻮﻣﻲ‬
‫*ﺧﻮارزﻣﻴﺔ اﻟﺘﺮﺗﻴﺐ اﻟﺸﺠﺮي‬
‫*ﺧﻮارزﻣﻴﺔ اﻻﺧﺘﻴﺎر اﻟﺨﻄﻲ ﺑﺎﻟﺘﺒﺪﻳﻼت‬
‫*ﺧﻮارزﻣﻴﺔ اﻻﺧﺘﻴﺎر اﻟﺨﻄﻲ ﺑﺎﻟﻌﺪ‬

‫‪2‬‬
‫‪External Sort Algorithm‬‬
‫ﺧﻮارزﻣﻴﺎت اﻟﺘﺮﺗﻴﺐ اﻟﺨﺎرﺟﻲ ﻓﻜﺮﺗﻬﺎ اذا آﺎن ﻟﺪﻳﻨﺎ آﻤﻴﺔ آﺒﻴﺮة ﻣﻦ اﻟﺒﻴﺎﻧﺎت ﻻﺗﺘﺴﻌﻬﺎ اﻟﺬاآﺮة اﻟﺮﺋﻴﺴﻴﺔ ﻳﺘﻢ ﺧﺰﻧﻬﺎ ﻋﻠﻰ اﺣﺪ وﺳﺎﺋﻞ اﻟﺨﺰن‬
‫اﻟﺜﺎﻧﻮﻳﺔ ﺛﻢ ﺗﻘﺴﻢ اﻟﻰ ﻣﻘﺎﻃﻊ وﻳﺘﻢ ﺗﺮﺗﻴﺒﻬﺎ وﻓﻖ اﺣﺪى ﻃﺮق اﻟﺘﺮﺗﻴﺐ اﻟﺪاﺧﻠﻲ ﺛﻢ ﻳﺘﻢ اﻟﺪﻣﺞ ﺑﻴﻦ هﺬﻩ اﻟﻤﻘﺎﻃﻊ ‪.‬‬
‫وﻳﺘﻀﻤﻦ اﻟﺘﺮﺗﻴﺐ اﻟﺨﺎرﺟﻲ اﻟﻄﺮق اﻟﺘﺎﻟﻴﺔ‪-:‬‬
‫‪Two-Way-Merge‬‬ ‫* اﻟﺘﺮﺗﻴﺐ ﺑﺎﻟﺪﻣﺞ ذو اﻟﻤﺴﺎرﻳﻦ‬
‫‪K-Way-Merge‬‬ ‫* اﻟﺘﺮﺗﻴﺐ ﺑﺎﻟﺪﻣﺞ ﻣﺘﻌﺪد اﻟﻤﺴﺎرﻳﻦ‬
‫‪Balanced Two-Way-Merge‬‬ ‫* اﻟﺘﺮﺗﻴﺐ ﺑﺎﻟﺪﻣﺞ اﻟﻤﺘﻮازي ذي اﻟﻤﺴﺎرﻳﻦ‬
‫‪Poly phase Two-Way-Merge‬‬ ‫* اﻟﺘﺮﺗﻴﺐ ﺑﺎﻟﺪﻣﺞ ﻣﺘﻌﺪد اﻻﻃﻮار‬

‫‪Bubble Sort Algorithm‬‬


‫ﺧﻮارزﻣﻴﺔ اﻟﺘﺮﺗﻴﺐ اﻟﻔﻘﺎﻋﻲ‬
‫ﻓﻜﺮﺗﻬﺎ‪-:‬‬
‫هﻲ ﻣﻘﺎرﻧﺔ آﻞ ﻋﻨﺼﺮﻳﻦ ﻣﺘﺠﺎورﻳﻦ ﻓﻲ اﻟﻘﺎﺋﻤﺔ وﺗﺒﺪﻳﻞ ﻣﻮاﻗﻌﻬﻤﺎ وﺧﻼل آﻞ دورة ﻣﻦ اﻟﻤﻘﺎرﻧﺎت واﻟﺘﺒﺪﻳﻼت ﻳﺘﺤﺮك اﻟﻌﻨﺼﺮ ﺣﺘﻰ ﻳﺴﺘﻘﺮ‬
‫ﻓﻲ اﻟﻤﻮﻗﻊ اﻟﻤﻨﺎﺳﺐ‪.‬‬
‫‪ ( N‬ﻳﻤﺜﻞ ﻋﺪد اﻟﻌﻨﺎﺻﺮ‪.‬‬ ‫ﺣﻴﺚ اﻧﻨﺎ ﻧﺤﺘﺎج اﻟﻰ ) ‪ ( N-1‬ﻣﻦ اﻟﺪورات ﻟﻠﺤﺼﻮل ﻋﻠﻰ ﻋﻤﻠﻴﺔ اﻟﺘﺮﺗﻴﺐ وﺣﻴﺚ ان )‬
‫ﺳﻤﻴﺖ ﺑﺎﻟﺘﺮﺗﻴﺐ اﻟﻔﻘﺎﻋﻲ وذﻟﻚ ﻻن اﻻرﻗﺎم اﻟﺼﻐﻴﺮة ﺗﻄﻔﻮ اﻟﻰ اﻻﻋﻠﻰ واﻻرﻗﺎم اﻟﻜﺒﻴﺮة ﺗﺴﺘﻘﺮ ﻓﻲ اﻻﺳﻔﻞ‪.‬‬

‫ﻣﺜﺎل ‪ -:‬رﺗﺐ ﻋﻨﺎﺻﺮ اﻟﻘﺎﺋﻤﺔ اﻟﺘﺎﻟﻴﺔ ﺑﺎﺳﺘﺨﺪام اﻟﺘﺮﺗﻴﺐ اﻟﻔﻘﺎﻋﻲ‬


‫‪66‬‬ ‫‪5‬‬ ‫‪17‬‬ ‫‪93‬‬ ‫‪41‬‬ ‫‪11‬‬ ‫‪54‬‬ ‫‪43‬‬

‫‪N(N-1)/2‬‬ ‫اآﺒﺮ ﻋﺪد ﻣﻦ اﻟﻤﻘﺎرﻧﺎت=‬


‫ﺑﻤﺎ ان ‪ N=8‬ﻟﺬﻟﻚ ﻳﺠﺐ ان ﻻﻳﺰﻳﺪ ﻋﺪد اﻟﻤﻘﺎرﻧﺎت ﻋﻦ ‪ 28‬ﻣﻘﺎرﻧﺔ‬
‫ﺧﻄﻮات اﻟﺤﻞ‪-:‬‬
‫اﻟﻤﺮﺣﻠﺔ اﻻوﻟﻰ ‪-:‬‬
‫‪( N-1‬وﻧﺒﺪل ﻣﻮﻗﻌﻬﻤﺎ ﺑﺤﻴﺚ ﻳﻜﻮن اﻻﺻﻐﺮ ﻗﺒﻞ اﻻﺧﺮ وﻧﺴﺘﻤﺮ ﻟﺤﻴﻦ‬ ‫ﻧﻘﺎرن اﻟﻌﻨﺼﺮ ﻓﻲ اﻟﻤﻮﻗﻊ ) ‪( N‬ﻣﻊ اﻟﻌﻨﺼﺮ ﻓﻲ اﻟﻤﻮﻗﻊ )‬
‫اﻟﻮﺻﻮل اﻟﻰ ﻣﻘﺎرﻧﺔ اﻟﻌﻨﺼﺮ ﻓﻲ اﻟﻤﻮﻗﻊ اﻟﺜﺎﻧﻲ ﻣﻊ اﻟﻌﻨﺼﺮ ﻓﻲ اﻟﻤﻮﻗﻊ اﻻول‬
‫اﻟﻤﺮﺣﻠﺔ اﻟﺜﺎﻧﻴﺔ ‪-:‬‬
‫ﻧﻘﺎرن ﺑﻨﻔﺲ اﻟﻄﺮﻳﻘﺔ اﻟﻌﻨﺼﺮ ﻓﻲ اﻟﻤﻮﻗﻊ ‪ N‬اﻟﻰ اﻟﻌﻨﺼﺮ ﻓﻲ اﻟﻤﻮﻗﻊ اﻟﺜﺎﻧﻲ‬
‫اﻟﻤﺮﺣﻠﺔ اﻟﺜﺎﻟﺜﺔ ‪-:‬‬
‫‪ ( N-1‬ﻣﻦ اﻟﺪورات‬ ‫ﻧﻜﺮر اﻟﺨﻄﻮات اﻋﻼﻩ )‬

‫‪3‬‬
‫اﻟﺪورة‬ ‫اﻟﺪورة‬ ‫اﻟﺪورة‬ ‫اﻟﺪورة‬ ‫اﻟﺪورة‬ ‫اﻟﺪورة‬ ‫اﻟﺪورة‬ ‫ﻣﻘﺎرﻧﺔ‬ ‫ﻣﻘﺎرﻧﺔ‬ ‫ﻣﻘﺎرﻧﺔ‬ ‫ﻣﻘﺎرﻧﺔ‬ ‫ﻣﻘﺎرﻧﺔ‬ ‫ﻣﻘﺎرﻧﺔ‬ ‫ﻣﻘﺎرﻧﺔ‬
‫)‪(7‬‬ ‫)‪(6‬‬ ‫)‪(5‬‬ ‫)‪(4‬‬ ‫)‪(3‬‬ ‫)‪(2‬‬ ‫)‪(1‬‬ ‫)‪(7‬‬ ‫)‪(6‬‬ ‫)‪(5‬‬ ‫)‪(4‬‬ ‫)‪(3‬‬ ‫)‪(2‬‬ ‫)‪(1‬‬ ‫اﻟﻘﺎﺋﻤﺔ‬
‫‪5‬‬ ‫‪5‬‬ ‫‪5‬‬ ‫‪5‬‬ ‫‪5‬‬ ‫‪5‬‬ ‫‪5‬‬ ‫‪5‬‬ ‫‪43‬‬ ‫‪43‬‬ ‫‪43‬‬ ‫‪43‬‬ ‫‪43‬‬ ‫‪43‬‬ ‫‪43‬‬
‫‪11‬‬ ‫‪11‬‬ ‫‪11‬‬ ‫‪11‬‬ ‫‪11‬‬ ‫‪11‬‬ ‫‪43‬‬ ‫‪43‬‬ ‫‪5‬‬ ‫‪54‬‬ ‫‪54‬‬ ‫‪54‬‬ ‫‪54‬‬ ‫‪54‬‬ ‫‪54‬‬
‫‪17‬‬ ‫‪17‬‬ ‫‪17‬‬ ‫‪17‬‬ ‫‪17‬‬ ‫‪43‬‬ ‫‪54‬‬ ‫‪54‬‬ ‫‪54‬‬ ‫‪5‬‬ ‫‪11‬‬ ‫‪11‬‬ ‫‪11‬‬ ‫‪11‬‬ ‫‪11‬‬
‫‪41‬‬ ‫‪41‬‬ ‫‪41‬‬ ‫‪41‬‬ ‫‪43‬‬ ‫‪54‬‬ ‫‪11‬‬ ‫‪11‬‬ ‫‪11‬‬ ‫‪11‬‬ ‫‪5‬‬ ‫‪41‬‬ ‫‪41‬‬ ‫‪41‬‬ ‫‪41‬‬
‫‪43‬‬ ‫‪43‬‬ ‫‪43‬‬ ‫‪43‬‬ ‫‪54‬‬ ‫‪17‬‬ ‫‪41‬‬ ‫‪41‬‬ ‫‪41‬‬ ‫‪41‬‬ ‫‪41‬‬ ‫‪5‬‬ ‫‪93‬‬ ‫‪93‬‬ ‫‪93‬‬
‫‪54‬‬ ‫‪54‬‬ ‫‪54‬‬ ‫‪54‬‬ ‫‪41‬‬ ‫‪41‬‬ ‫‪93‬‬ ‫‪93‬‬ ‫‪93‬‬ ‫‪93‬‬ ‫‪93‬‬ ‫‪93‬‬ ‫‪5‬‬ ‫‪17‬‬ ‫‪17‬‬
‫‪66‬‬ ‫‪66‬‬ ‫‪66‬‬ ‫‪66‬‬ ‫‪66‬‬ ‫‪93‬‬ ‫‪17‬‬ ‫‪17‬‬ ‫‪17‬‬ ‫‪17‬‬ ‫‪17‬‬ ‫‪17‬‬ ‫‪17‬‬ ‫‪5‬‬ ‫‪5‬‬
‫‪93‬‬ ‫‪93‬‬ ‫‪93‬‬ ‫‪93‬‬ ‫‪93‬‬ ‫‪66‬‬ ‫‪66‬‬ ‫‪66‬‬ ‫‪66‬‬ ‫‪66‬‬ ‫‪66‬‬ ‫‪66‬‬ ‫‪66‬‬ ‫‪66‬‬ ‫‪66‬‬

‫)(‪Public sub Bubble‬‬


‫‪For i=1 to n-1‬‬
‫‪For j= n to i+1‬‬
‫)‪If a(j)<a(j-1‬‬
‫)‪X=a(j‬‬
‫)‪A(j)=a(j-1‬‬
‫‪A(j-1)=x‬‬
‫‪End if‬‬
‫‪Next j‬‬
‫‪Next i‬‬
‫‪End sub‬‬

‫‪Shell Sort Algorithm‬‬


‫ﺧﻮارزﻣﻴﺔ ﺗﺮﺗﻴﺐ ﺷﻴﻞ‬
‫ﻓﻜﺮﺗﻬﺎ‪-:‬‬
‫ﺗﻘﺴﻴﻢ اﻟﻘﺎﺋﻤﺔ اﻟﻰ ﻣﺴﺎﻓﺎت وهﻤﻴ ﺔ وﺗﺠ ﺮي ﻣﻘﺎرﻧ ﺔ ﻟﻜ ﻞ ﻋﻨ ﺼﺮﻳﻦ او اآﺜ ﺮ ﻟﻴ ﺴﺖ ﻣﺘﺠ ﺎورة واﻧﻤ ﺎ ﻣﺘﺒﺎﻋ ﺪة ﺑﻤ ﺴﺎﻓﺔ ﻣﺤ ﺪدة ﻣﻘ ﺪارهﺎ اﻟﻤ ﺴﺎﻓﺔ‬
‫اﻟﻮهﻤﻴﺔ وهﻜﺬا ﻳﺘﻢ ﺗﻐﻴﺮ اﻟﻤﺴﺎﻓﺔ اﻟﻮهﻤﻴﺔ وﺗﺠﺮى ﻋﻤﻠﻴﺔ اﻟﻤﻘﺎرﻧﺔ واﻟﺘﻐﻴﺮ ﺣﺘﻰ ﺗﺘﺮﺗﺐ اﻟﻘﺎﺋﻤﺔ‬

‫ﻣﺜﺎل ‪ -:‬رﺗﺐ ﻋﻨﺎﺻﺮ اﻟﻘﺎﺋﻤﺔ اﻟﺘﺎﻟﻴﺔ ﺑﺎﺳﺘﺨﺪام ﺗﺮﺗﻴﺐ ﺷﻴﻞ‬


‫‪43‬‬ ‫‪17‬‬ ‫‪5‬‬ ‫‪41‬‬ ‫‪93‬‬ ‫‪54‬‬ ‫‪11‬‬ ‫‪66‬‬

‫ﺧﻄﻮات اﻟﺤﻞ‪-:‬‬
‫وﻧﻀﻊ اﻟﻌﻨﺎﺻﺮ اﻻآﺒﺮ ﻋﻠﻰ ﺟﻬﺔ اﻟﻴﻤﻴﻦ واﻻﺻﻐﺮ ﻋﻠﻰ اﻟﻴﺴﺎر‬ ‫‪Gap=4‬‬ ‫ﻻ‪ -:‬ﻧﺨﺘﺎر ﻣﺴﺎﻓﺔ وهﻤﻴﺔ ﻣﻘﺪرهﺎ‬
‫او ً‬

‫‪4‬‬
‫‪43‬‬ ‫‪17‬‬ ‫‪5‬‬ ‫‪41‬‬ ‫‪93‬‬ ‫‪54‬‬ ‫‪11‬‬ ‫‪66‬‬

‫‪43‬‬ ‫‪17‬‬ ‫‪5‬‬ ‫‪41‬‬ ‫‪93‬‬ ‫‪54‬‬ ‫‪11‬‬ ‫‪66‬‬

‫‪43‬‬ ‫‪17‬‬ ‫‪5‬‬ ‫‪41‬‬ ‫‪93‬‬ ‫‪54‬‬ ‫‪11‬‬ ‫‪66‬‬

‫‪43‬‬ ‫‪17‬‬ ‫‪5‬‬ ‫‪41‬‬ ‫‪93‬‬ ‫‪54‬‬ ‫‪11‬‬ ‫‪66‬‬

‫‪Gap=2‬‬ ‫ﺛﺎﻧﻴ ًﺎ ‪ -: -:‬ﻧﺨﺘﺎر ﻣﺴﺎﻓﺔ وهﻤﻴﺔ ﻣﻘﺪرهﺎ‬


‫‪43‬‬ ‫‪17‬‬ ‫‪5‬‬ ‫‪41‬‬ ‫‪93‬‬ ‫‪54‬‬ ‫‪11‬‬ ‫‪66‬‬

‫‪5‬‬ ‫‪17‬‬ ‫‪11‬‬ ‫‪41‬‬ ‫‪43‬‬ ‫‪54‬‬ ‫‪93‬‬ ‫‪66‬‬

‫‪Result‬‬
‫‪5‬‬ ‫‪17‬‬ ‫‪11‬‬ ‫‪41‬‬ ‫‪43‬‬ ‫‪54‬‬ ‫‪93‬‬ ‫‪66‬‬

‫‪Gap=1‬‬ ‫ﺛﺎﻟﺜ ًﺎ ‪ -: -:‬ﻧﺨﺘﺎر ﻣﺴﺎﻓﺔ وهﻤﻴﺔ ﻣﻘﺪرهﺎ‬

‫‪5‬‬ ‫‪11‬‬ ‫‪17‬‬ ‫‪41‬‬ ‫‪43‬‬ ‫‪54‬‬ ‫‪66‬‬ ‫‪93‬‬

‫‪Quick Sort Algorithm‬‬


‫ﺧﻮارزﻣﻴﺔ اﻟﺘﺮﺗﻴﺐ اﻟﺴﺮﻳﻊ‬

‫ﻓﻜﺮﺗﻬﺎ‪-:‬‬
‫اﺧﺘﻴﺎر ﻋﻨﺼﺮ ﻣﻦ ﻋﻨﺎﺻﺮ اﻟﻘﺎﺋﻤﺔ اﻟﻤﻌﻄﺎة ﻣﺜﻞ ‪) X‬اﻻﻓﻀﻞ ان ﻳﻜﻮن اﻟﻌﻨﺼﺮ اﻟﻮﺳﻄﻲ( ﺛﻢ ﻧﺠﻌﻞ اﻟﻌﻨﺎﺻﺮ اﻟﺘﻲ ﻗﻴﻤﺘﻬﺎ اﻗ ﻞ ﻣ ﻦ ‪ x‬ﻗﺒﻠ ﻪ ﻓ ﻲ‬
‫اﻟﻘﺎﺋﻤﺔ اﻣﺎ اﻟﻌﻨﺎﺻﺮ اﻟﺘﻲ ﺗﻜﻮن ﻗﻴﻤﺘﻬﺎ اآﺒﺮ ﻣﻦ ‪ x‬ﺑﻌﺪﻩ ﺛﻢ ﺗﺘﻢ ﻋﻤﻠﻴﺔ اﻟﻤﺴﺢ اﻟﺘﺼﺎﻋﺪي ﻟﻌﻨﺎﺻﺮ اﻟﻘﺎﺋﻤﺔ اﻟﺘﻲ ﺗﻘ ﻊ ﻗﺒ ﻞ اﻟﻌﻨ ﺼﺮ ‪ x‬ﻓ ﺎذا وﺟ ﺪﻧﺎ‬
‫ﻋﻨﺼﺮ اآﺒﺮ ﻣﻨﻪ ﻧﺤﺪدﻩ )أي ﻧﻀﻊ اﺷﺎرة( ﺛﻢ ﻧﻤﺴﺢ ﺗﻨﺎزﻟﻴًﺎ ﻋﻨﺎﺻﺮ اﻟﻘﺎﺋﻤﺔ اﻟﻮاﻗﻌﺔ ﺑﻌﺪ ‪ x‬ﻓﺎن وﺟﺪﻧﺎ ﻋﻨﺼﺮ اﻗﻞ ﻣﻨﻪ ﻧﺤ ﺪدﻩ اﻳ ﻀًﺎ ﺛ ﻢ ﻧﺠ ﺮي‬
‫ﻋﻤﻠﻴﺔ اﻟﺘﺒﺪﻳﻞ ﺑﻴﻨﻬﻤﺎ وﻧﺴﺘﻤﺮ ﺣﺘﻰ ﺗﺘﺮﺗﺐ اﻟﻘﺎﺋﻤﺔ‪.‬‬

‫ﻣﺜﺎل ‪ -:‬رﺗﺐ ﻋﻨﺎﺻﺮ اﻟﻘﺎﺋﻤﺔ اﻟﺘﺎﻟﻴﺔ ﺑﺎﺳﺘﺨﺪام اﻟﺘﺮﺗﻴﺐ اﻟﺴﺮﻳﻊ‬


‫‪43‬‬ ‫‪54‬‬ ‫‪11‬‬ ‫‪41‬‬ ‫‪93‬‬ ‫‪17‬‬ ‫‪5‬‬ ‫‪66‬‬
‫اﻻﺻ ﻐﺮ‬ ‫اﻻآﺒ ﺮ‬
‫‪X‬‬

‫‪5‬‬
‫ﺧﻄﻮات اﻟﺤﻞ‪-:‬‬
‫اﻟﻤﺮﺣﻠﺔ اﻻوﻟﻰ‪:‬‬
‫‪X= 41‬‬
‫ﻻ‪ -:‬ﻧﺨﺘﺎر‬
‫او ً‬
‫اذن ﺗﺒﻘﻰ ﻣﻜﺎﻧﻬﺎ‬ ‫‪41<66‬‬
‫اذن ﻧﻀﻊ اﺷﺎرة ﻋﻠﻰ اﻟـ ‪5‬‬ ‫‪41>5‬‬
‫‪ 41<43‬اذن ﻧﻀﻊ اﺷﺎرة ﻋﻠﻰ اﻟـ ‪43‬‬
‫ﻧﺠﺮي ﻋﻤﻠﻴﺔ اﻟﺘﺒﺪﻳﻞ ﻓﺘﺼﺒﺢ اﻟﻘﺎﺋﻤﺔ هﻲ‪-:‬‬
‫‪5‬‬ ‫‪54‬‬ ‫‪11‬‬ ‫‪41‬‬ ‫‪93‬‬ ‫‪17‬‬ ‫‪43‬‬ ‫‪66‬‬

‫اذن ﻧﻀﻊ اﺷﺎرة ﻋﻠﻰ اﻟـ ‪17‬‬ ‫‪41>17‬‬


‫اذن ﻧﻀﻊ اﺷﺎرة ﻋﻠﻰ اﻟـ ‪54‬‬ ‫‪41<54‬‬
‫ﻧﺠﺮي ﻋﻤﻠﻴﺔ اﻟﺘﺒﺪﻳﻞ ﻓﺘﺼﺒﺢ اﻟﻘﺎﺋﻤﺔ هﻲ‪-:‬‬
‫‪5‬‬ ‫‪17‬‬ ‫‪11‬‬ ‫‪41‬‬ ‫‪93‬‬ ‫‪54‬‬ ‫‪43‬‬ ‫‪66‬‬

‫اذن ﺗﺒﻘﻰ ﻣﻜﺎﻧﻬﺎ‬ ‫‪41<93‬‬


‫اذن ﺗﺒﻘﻰ ﻣﻜﺎﻧﻬﺎ‬ ‫‪41>11‬‬
‫اﻟﻤﺮﺣﻠﺔ اﻟﺜﺎﻧﻴﺔ‪:‬‬
‫‪X‬‬ ‫ﻻ‪ -:‬ﻧﺄﺧﺬ ﻗﺎﺋﻤﺔ اﻻﻋﺪاد اﻟﺘﻲ هﻲ اآﺒﺮ ﻣﻦ‬
‫او ً‬
‫‪93‬‬ ‫‪54‬‬ ‫‪43‬‬ ‫‪66‬‬
‫ا‪ .‬ﻧﺨﺘﺎر ﻟﻬﺎ ‪X=54‬‬

‫اذن ﺗﺒﻘﻰ ﻣﻜﺎﻧﻬﺎ‬ ‫‪54<66‬‬


‫اذن ﻧﻀﻊ اﺷﺎرة ﻋﻠﻰ اﻟـ ‪43‬‬ ‫‪54>43‬‬
‫اذن ﻧﻀﻊ اﺷﺎرة ﻋﻠﻰ اﻟـ ‪93‬‬ ‫‪54<93‬‬
‫‪43‬‬ ‫‪54‬‬ ‫‪93‬‬ ‫‪66‬‬ ‫ﻧﺠﺮي ﻋﻤﻠﻴﺔ اﻟﺘﺒﺪﻳﻞ ﻓﺘﺼﺒﺢ اﻟﻘﺎﺋﻤﺔ هﻲ‪-:‬‬

‫ﺑﺎﻟﻨﺴﺒﺔ اﻟﻰ اﻟﻘﺎﺋﻤﺔ‬ ‫‪X=93‬‬ ‫ب‪ .‬ﻧﺨﺘﺎر‬


‫‪93‬‬ ‫‪66‬‬
‫ﻓﺘﺼﺒﺢ اﻟﻘﻠﺌﻤﺔ ‪-:‬‬
‫‪43‬‬ ‫‪54‬‬ ‫‪66‬‬ ‫‪93‬‬
‫ﻧﻄﺒﻖ ﻧﻔﺲ اﻟﺨﻄﻮات ﺑﺎﻟﻨﺴﺒﺔ اﻟﻰ اﻟﻘﺎﺋﻤﺔ‬
‫‪5‬‬ ‫‪17‬‬ ‫‪11‬‬

‫‪6‬‬
-:‫ﻣﻼﺣﻈﺎت ﻋﺎﻣﺔ‬
‫ ﻋﻨﺪﻣﺎ ﻧﻀﻊ اﺷﺎرة ﻋﻠﻰ ﻋﻨﺼﺮ ﻓﺎﻧﻪ ﻳﻨﺘﻘﻞ اﻟﻰ اﻟﺠﻬﺔ اﻻﺧﺮى ﻣﻦ اﻟﻘﺎﺋﻤﺔ‬.1
( 2N*Ln N ) ‫ ﻳﻜﻮن اآﺒﺮ ﻋﺪد ﻣﻦ اﻟﻤﻘﺎرﻧﺎت اﻟﻰ هﺬﻩ اﻟﻄﺮﻳﻘﺔ هﻮ‬.2
‫ هﺬﻩ اﻟﻄﺮﻳﻘﺔ ﺗﻜﻮن ﻣﻔﻴﺪة اﻟﻰ ﻟﻠﻘﻮاﺋﻢ اﻟﺘﻲ ﺗﻜﻮن ﻏﻴﺮ ﻣﺮﺗﺒﺔ اﻟﻰ ﺣﺪ آﺒﻴﺮ وﻏﻴﺮ ﻋﻤﻠﻴﺔ ﻟﻠﻘﻮاﺋﻢ ﺷﺒﻪ اﻟﻤﺮﺗﺒﺔ‬.3
Public sub Quicksort(byref list as string, byref F as integer, byref L as integer )
Dim I as integer
Dim j as integer
Dim x as integer{or any other type}
I=f
J=L
X=list((i+j) / 2)
Repeat
While list(i)<x do i=i+1
While x< list(j) do j=j+1
If i<=j then
Swap(list(i),list(j))
I=i+1
J=j+1
End if
Loop untie i<j
If f<j then Quicksort(list,f,j)
End if
If i<L then Quicksort(list,i,L)
End if
End sub

You might also like