ബബിൾ സോർട്ട്

testwiki സംരംഭത്തിൽ നിന്ന്
22:35, 11 ഏപ്രിൽ 2024-നു ഉണ്ടായിരുന്ന രൂപം സൃഷ്ടിച്ചത്:- imported>InternetArchiveBot (Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5)
(മാറ്റം) ←പഴയ രൂപം | ഇപ്പോഴുള്ള രൂപം (മാറ്റം) | പുതിയ രൂപം→ (മാറ്റം)
വഴികാട്ടികളിലേക്ക് പോവുക തിരച്ചിലിലേക്ക് പോവുക

ഫലകം:Infobox Algorithm

ബബിൾ_സോർട്ട് എഡിറ്റുചെയ്ത നിറം

ഒരു അടുക്കിലെയോ പട്ടികയിലെയോ സംഖ്യകളെയും മറ്റും ക്രമത്തിലാക്കാൻ ഉപയോഗിക്കുന്ന ഒരു ക്രമീകരണ അൽഗൊരിതമാണ്‌ ബബിൾ ക്രമീകരണം (Bubble Sort) അഥവാ കുമിള ക്രമീകരണം. വിവരിക്കാൻ എളുപ്പമുള്ളതും, സമയസങ്കീർണ്ണത കൂടിയതിനാൽ വളരെ സമയമെടുക്കുന്നതുമായ ഒരു ക്രമീകരണ അൽഗൊരിതമാണിത്. Nഅംഗങ്ങളുള്ള ഇൻപുട്ട് ക്രമപ്പെടുത്താനായിക്കൊണ്ട് ഈ അൽഗൊരിതത്തിന് വേണ്ടുന്ന സമയസങ്കീർണ്ണത O(N2)ഉം സ്ഥലസങ്കീർണ്ണത O(N)ഉമാണ്‌. ഒരു സ്വസ്ഥല അൽഗൊരിതമാണ്‌ (in-place algorithm) ഇത് എന്നതിനാൽ ഇൻപുട്ടിന് പുറമെ O(1)മെമ്മറി മാത്രമേ ഇതിന്‌ ആവശ്യമുള്ളൂ.

ക്രമത്തിലല്ലാത്തവയും അടുത്തടുത്തുള്ളവയുമായ സംഖ്യകളെ പരസ്പരം ആവർത്തിച്ചാവർത്തിച്ച് മാറ്റുന്നതു വഴിയാണ്‌ ബബിൾ ക്രമീകരണം സംഖ്യകളെ ക്രമീകരിക്കുന്നത്. ക്രമീകരിക്കപ്പെട്ട സംഖ്യകൾ കുമിളകളെപ്പോലെ (bubbles) പട്ടികയുടെ ഒരു ഭാഗത്തേക്കു പോകുന്നു എന്നതിനാലാണ്‌ ഈ അൽഗൊരിതത്തിന്‌ പേര്‌ ലഭിച്ചത്. സംഖ്യകളെ താരതമ്യം ചെയ്ത് ക്രമീകരിക്കുന്നതിനാൽ ഇത് ഒരു താരതമ്യ സോർട്ട് ആണ്‌.

അൽഗൊരിതം

A[1..N]എന്ന ചിഹ്നത്താൽ കുറിയ്ക്കുന്നതും Nഅംഗങ്ങളുള്ളതുമായ ഒരടുക്ക് ഇൻപുട്ടായി തന്നിട്ടുണ്ടെന്ന് കരുതുക. Nഘട്ടങ്ങളായാണ് ബബിൾ ക്രമീകരണ അൽഗൊരിതം പ്രവർത്തിക്കുന്നത്.

ആദ്യഘട്ടത്തിൽ ഇനിപ്പറയുന്ന പ്രക്രിയ ചെയ്യുക. A[1]ഉം A[2]ഉം താരതമ്യം ചെയ്യുക. A[1]>A[2]ആണെങ്കിൽ ആ രണ്ട് വിലകളെയും അടുക്കിൽ പരസ്പരം സ്ഥാനം മാറ്റുക. കൂടുതൽ വ്യക്തമായിപ്പറഞ്ഞാൽ, A[1]ഇൽ A[2]ന്റെ വില സൂക്ഷിക്കുകയും A[2]ഇൽ A[1]ന്റെ വില സൂക്ഷിക്കുകയും ചെയ്യുക. മറിച്ച് A[1]<A[2]ആണെങ്കിൽ അവയെ അവഗണിച്ച് A[2]നെയും A[3]നെയും മേൽപ്പറഞ്ഞ പ്രക്രിയയ്ക്ക് വിധേയമാക്കുക. ഇപ്രകാരം N1തവണ ഇതേ പ്രക്രിയ ആവർത്തിച്ചു കഴിഞ്ഞാൽ (അഥവാ A[N1]ഉം A[N]ഉം ഇതേ പ്രക്രിയയ്ക്ക് വിധേയമായിക്കഴിഞ്ഞാൽ), ഒന്നാമത്തെ ഘട്ടം കഴിഞ്ഞു.

രണ്ടാമത്തെ ഘട്ടത്തിൽ മേൽപ്പറഞ്ഞ പ്രക്രിയകൾ N2തവണയേ ആവർത്തിക്കുന്നുള്ളൂ. അതായത് A[N2]ഉം A[N1]ഉം ഈ പ്രക്രിയക്ക് വിധേയമായിക്കഴിയുന്നതു വരെ മാത്രം. ഇപ്രകാരം iആമത്തെ ഘട്ടത്തിൽ മേൽപ്പറഞ്ഞ പ്രക്രിയകൾ Niതവണ മാത്രം ആവർത്തിക്കുന്നു.

ഇങ്ങനെ ആകെ Nഘട്ടങ്ങൾക്കു ശേഷം അടുക്കിലെ അംഗങ്ങളെല്ലാം ക്രമത്തിലാകും.

ഔപചാരിക വിവരണം

Nഅംഗങ്ങളുള്ള Aഎന്ന അടുക്ക് ബബിൾ ക്രമീകരണം വഴി ക്രമപ്പെടുത്താൻ:

1. അവസാനം N
2. കൊടി  ശരി
3. (അവസാനം == 1 അഥവാ കൊടി == തെറ്റ്) ആണെങ്കിൽ നിർത്തുക
4. കൊടി  തെറ്റ്
5. 1മുതൽ അവസാനം1 വരെയുള്ള വിലകൾ ഓരോന്നോരോന്നായി iയ്ക്ക് നൽകി പടി 6ഉം 7ഉം ചെയ്യുക
6. A[i]>A[i+1]ആണെങ്കിൽ അവയെ പരസ്പരം സ്ഥലം മാറ്റുക                                                     7. കൊടി  ശരി
8. അവസാനം അവസാനം 1
9. 3ആം പടിയിലേക്ക് പോകുക

വിശകലനം

സംഖ്യകൾ തികച്ചും വിപരീതക്രമത്തിലാകുമ്പോൾ N(N1)2തവണ പടി 6 ചെയ്യേണ്ടി വരുന്നു എന്നതിനാൽ കുമിളക്രമീകരണത്തിന്റെ കൂടിയ സമയസങ്കീർണ്ണത O(N2)ആണ്‌. സംഖ്യകൾ തികച്ചും ക്രമത്തിലാകുമ്പോൾ ഇത് N1തവണ മാത്രം ചെയ്താൽ മതി എന്നതിനാൽ കുറഞ്ഞ സമയസങ്കീർണ്ണത O(N) ആണ്‌. ശരാശരി സമയസങ്കീർണ്ണത O(N2)തന്നെ. ശരാശരി, കൂടിയ സമയസങ്കീർണ്ണതകൾ O(NlogN)ആയുള്ള ക്രമീകരണ അൽഗൊരിതങ്ങൾ ഉണ്ട്. O(N2)സമയസങ്കീർണ്ണത ഉള്ള ഇൻസർഷൻ സോർട്ട് മുതലായ അൽഗൊരിതങ്ങളും കുമിളക്രമീകരണത്തെക്കാൾ വേഗത്തിൽ ക്രമീകരണം നടത്തുന്നു എന്നതിനാൽ വലിയ പട്ടികകളോ അടുക്കുകളോ ക്രമപ്പെടുത്താൻ കുമിളക്രമീകരണം ഉപയോഗിക്കാറില്ല.

ഫലകം:കവാടം വിവരസാങ്കേതികവിദ്യ


പുറത്തേക്കുള്ള കണ്ണികൾ

ഫലകം:Wikibooks

no:Sorteringsalgoritme#Boblesortering

"https://ml.wiki.beta.math.wmflabs.org/w/index.php?title=ബബിൾ_സോർട്ട്&oldid=148" എന്ന താളിൽനിന്ന് ശേഖരിച്ചത്