પાયથોનમાં વિવિધ સૉર્ટિંગ પદ્ધતિઓ અને અલ્ગોરિધમ્સનો ઉપયોગ કરીને સૂચિઓ, એરે, શબ્દકોશો વગેરેને સૉર્ટ કરવા માટે પાયથોન સૉર્ટ ફંક્શનનો ઉપયોગ કેવી રીતે કરવો તે જાણો:
સૉર્ટિંગ એ એક તકનીક છે જેનો ઉપયોગ સૉર્ટ કરવા માટે થાય છે. ચડતા ક્રમમાં અથવા ઉતરતા ક્રમમાં ડેટા.
મોટાભાગે મોટા પ્રોજેક્ટના ડેટાને યોગ્ય ક્રમમાં ગોઠવવામાં આવતો નથી અને આ જરૂરી ડેટાને અસરકારક રીતે એક્સેસ કરવામાં અને લાવવામાં સમસ્યા ઊભી કરે છે.
આ સમસ્યાને ઉકેલવા માટે વર્ગીકરણ તકનીકોનો ઉપયોગ કરવામાં આવે છે. પાયથોન વિવિધ સૉર્ટિંગ તકનીકો પ્રદાન કરે છે ઉદાહરણ તરીકે, બબલ સૉર્ટ, ઇન્સર્શન સૉર્ટ, મર્જ સૉર્ટ, ક્વિકસોર્ટ, વગેરે.
આ ટ્યુટોરીયલમાં, આપણે સમજીશું કે વિવિધ એલ્ગોરિધમ્સનો ઉપયોગ કરીને પાયથોનમાં સોર્ટિંગ કેવી રીતે કાર્ય કરે છે.
પાયથોન સૉર્ટ
પાયથોન સૉર્ટનું સિન્ટેક્સ
સોર્ટિંગ કરવા માટે, પાયથોન બિલ્ટ-ઇન ફંક્શન પૂરું પાડે છે એટલે કે “સોર્ટ()” ફંક્શન. તેનો ઉપયોગ યાદીના ડેટા તત્વોને ચડતા ક્રમમાં અથવા ઉતરતા ક્રમમાં ગોઠવવા માટે થાય છે.
આ ખ્યાલને ઉદાહરણ સાથે સમજીએ.
ઉદાહરણ 1:
``` a = [ 3, 5, 2, 6, 7, 9, 8, 1, 4 ] a.sort() print( “ List in ascending order: ”, a ) ```
આઉટપુટ:
આ ઉદાહરણમાં, આપેલ અક્રમાંકિત સૂચિને “ sort( )” ફંક્શનનો ઉપયોગ કરીને ચડતા ક્રમમાં ગોઠવવામાં આવે છે. .
ઉદાહરણ 2:
``` a = [ 3, 5, 2, 6, 7, 9, 8, 1, 4 ] a.sort( reverse = True ) print( “ List in descending order: ”, a ) ```
આઉટપુટ
ઉપરોક્ત ઉદાહરણમાં, આપેલ અક્રમાંકિત સૂચિને “ sort( reverse = True )” ફંક્શનનો ઉપયોગ કરીને વિપરીત ક્રમમાં સૉર્ટ કરવામાં આવે છે.
સમયસ્થાન બબલ સૉર્ટ O(n) O(n2) O(n2) O(1) હા હા નિવેશ સૉર્ટ 42 O(n) O(n2) O(n2) O(1) હા હા ઝડપી સૉર્ટ O(n log(n)) O(n log(n)) O(n2) O(N) ના હા મર્જ કરો સૉર્ટ કરો O(n log(n)) O(n log(n)) O(n log(n)) O(N) હા ના હીપ સોર્ટ O(n લોગ (n)) O(n log(n)) O(n log(n)) O(1) ના હા
ઉપરોક્ત સરખામણી કોષ્ટકમાં “O” એ ઉપર વર્ણવેલ બિગ ઓહ નોટેશન છે જ્યારે “n” અને “N” એટલે ઇનપુટનું કદ .
વારંવાર પૂછાતા પ્રશ્નો
પ્ર #1) પાયથોનમાં સૉર્ટ () શું છે?
જવાબ: પાયથોનમાં sort() એ એક કાર્ય છે જેનો ઉપયોગ ચોક્કસ ક્રમમાં સૂચિઓ અથવા એરેને સૉર્ટ કરવા માટે થાય છે. આ કાર્ય મોટા પ્રોજેક્ટ્સ પર કામ કરતી વખતે સૉર્ટ કરવાની પ્રક્રિયાને સરળ બનાવે છે. તે વિકાસકર્તાઓ માટે ખૂબ જ મદદરૂપ છે.
પ્રશ્ન #2) તમે પાયથોનમાં કેવી રીતે સૉર્ટ કરશો?
જવાબ: પાયથોન વિવિધ વર્ગીકરણ તકનીકો પ્રદાન કરે છે જેનો ઉપયોગ તત્વને સૉર્ટ કરવા માટે થાય છે. ઉદાહરણ તરીકે, ક્વિક સૉર્ટ, મર્જ સૉર્ટ, બબલ સૉર્ટ, ઇન્સર્શન સૉર્ટ વગેરે. તમામ સૉર્ટિંગ તકનીકો કાર્યક્ષમ અને સમજવામાં સરળ છે.
પ્રશ્ન #3) પાયથોન કેવી રીતે કરે છે સૉર્ટ () કામ?
જવાબ: સૉર્ટ()ફંક્શન આપેલ એરેને વપરાશકર્તા પાસેથી ઇનપુટ તરીકે લે છે અને સોર્ટિંગ અલ્ગોરિધમનો ઉપયોગ કરીને તેને ચોક્કસ ક્રમમાં ગોઠવે છે. અલ્ગોરિધમની પસંદગી વપરાશકર્તાની પસંદગી પર આધારિત છે. વપરાશકર્તાઓ વપરાશકર્તાની જરૂરિયાતોને આધારે ક્વિક સૉર્ટ, મર્જ સૉર્ટ, બબલ સૉર્ટ, ઇન્સર્શન સૉર્ટ વગેરેનો ઉપયોગ કરી શકે છે.
નિષ્કર્ષ
ઉપરના ટ્યુટોરીયલમાં, અમે પાયથોનમાં સૉર્ટ ટેકનિકની સાથે સાથે ચર્ચા કરી છે. સામાન્ય વર્ગીકરણ તકનીકો.
- બબલ સૉર્ટ
- નિવેશ સૉર્ટ
- ઝડપી સૉર્ટ
અમે તેમની સમયની જટિલતાઓ અને ફાયદાઓ વિશે શીખ્યા & ગેરફાયદા અમે ઉપરોક્ત તમામ તકનીકોની તુલના પણ કરી છે.
સૉર્ટિંગ એલ્ગોરિધમ્સની જટિલતાસમયની જટિલતા એ ચોક્કસ અલ્ગોરિધમ ચલાવવા માટે કમ્પ્યુટર દ્વારા લેવામાં આવેલ સમયનો જથ્થો છે. તેમાં ત્રણ પ્રકારના સમયની જટિલતાના કિસ્સાઓ છે.
- સૌથી ખરાબ કેસ: પ્રોગ્રામ ચલાવવા માટે કમ્પ્યુટર દ્વારા લેવામાં આવેલ મહત્તમ સમય.
- સરેરાશ કેસ: પ્રોગ્રામને ચલાવવા માટે કમ્પ્યુટર દ્વારા લઘુત્તમ અને મહત્તમ વચ્ચેનો સમય.
- શ્રેષ્ઠ કેસ: પ્રોગ્રામ ચલાવવા માટે કમ્પ્યુટર દ્વારા લેવામાં આવેલ ન્યૂનતમ સમય. તે સમયની જટિલતાનો શ્રેષ્ઠ કેસ છે.
જટિલતા સંકેતો
બિગ ઓહ નોટેશન, ઓ: બિગ ઓહ નોટેશન એ ઉપલા બાઉન્ડને અભિવ્યક્ત કરવાની સત્તાવાર રીત છે અલ્ગોરિધમ્સના ચાલતા સમય વિશે. તેનો ઉપયોગ સૌથી ખરાબ સમયની જટિલતાને માપવા માટે થાય છે અથવા અમે કહીએ છીએ કે અલ્ગોરિધમ દ્વારા પૂર્ણ કરવામાં સૌથી વધુ સમય લાગે છે.
બિગ ઓમેગા નોટેશન, : બિગ ઓમેગા નોટેશન છે અલ્ગોરિધમ્સના ચાલતા સમયની સૌથી નીચી સીમા જણાવવાની સત્તાવાર રીત. તેનો ઉપયોગ શ્રેષ્ઠ-કેસ સમયની જટિલતાને માપવા માટે થાય છે અથવા આપણે કહીએ છીએ કે અલ્ગોરિધમ દ્વારા લેવામાં આવેલ ઉત્તમ સમય.
થેટા નોટેશન, : થીટા નોટેશન એ અભિવ્યક્ત કરવાની સત્તાવાર રીત છે. બંને બાઉન્ડ્સ એટલે કે અલ્ગોરિધમ દ્વારા પૂર્ણ થવામાં લેવામાં આવેલ સમયનો નીચલો અને ઉપલો.
પાયથોનમાં સૉર્ટ કરવાની પદ્ધતિઓ
બબલ સૉર્ટ
બબલ સૉર્ટ એ ડેટાને સૉર્ટ કરવાની સૌથી સરળ રીત છે જે બ્રુટ ફોર્સ ટેકનિકનો ઉપયોગ કરે છે. તે દરેક ડેટા ઘટકને પુનરાવર્તિત કરશે અને અન્ય ઘટકો સાથે તેની તુલના કરશેવપરાશકર્તાને સૉર્ટ કરેલ ડેટા પ્રદાન કરવા માટે.
આ ટેકનીકને સમજવા માટે ચાલો એક ઉદાહરણ લઈએ:
- અમને એક એરે આપવામાં આવે છે જેમાં તત્વો " 10, 40, 7, 3, 15”. હવે, આપણે આ એરેને પાયથોનમાં બબલ સોર્ટ ટેકનિકનો ઉપયોગ કરીને ચડતા ક્રમમાં ગોઠવવાની જરૂર છે.
- 14
- લાલ તીરો એરેના અન્ય ઘટકો સાથે પ્રથમ ઘટકોની સરખામણીનું વર્ણન કરે છે.
- જો તમે જોશો કે “10” “40” કરતાં નાનું છે, તો તે સમાન રહે છે સ્થાન પરંતુ આગલું તત્વ “7” “10” કરતાં નાનું છે. તેથી તે બદલાઈ જાય છે અને પ્રથમ સ્થાને આવે છે.
- ઉપરોક્ત પ્રક્રિયા તત્વોને સૉર્ટ કરવા માટે ફરીથી અને ફરીથી કરવામાં આવશે.
-
- " પુનરાવૃત્તિ 2 " માં બીજા તત્વની તુલના એરેના અન્ય ઘટકો સાથે કરવામાં આવી રહી છે.
- જો તુલનાત્મક ઘટક નાનું હોય, તો તે બદલો, અન્યથા તે તે જ સ્થાને રહેશે.
-
- “ પુનરાવૃત્તિ 3” માં ત્રીજું તત્વ એરેના અન્ય ઘટકો સાથે સરખાવવામાં આવે છે.
-
- છેલ્લામાં " પુનરાવૃત્તિ 4 " બીજું છેલ્લું તત્વ એરેના અન્ય ઘટકો સાથે સરખાવવામાં આવે છે.
- માંઆ પગલું એરેને ચડતા ક્રમમાં સૉર્ટ કરવામાં આવે છે.
બબલ સૉર્ટ માટેનો પ્રોગ્રામ
``` def Bubble_Sort(unsorted_list): for i in range(0,len(unsorted_list)-1): for j in range(len(unsorted_list)-1): if(unsorted_list[j]>unsorted_list[j+1]): temp_storage = unsorted_list[j] unsorted_list[j] = unsorted_list[j+1] unsorted_list[j+1] = temp_storage return unsorted_list unsorted_list = [5, 3, 8, 6, 7, 2] print("Unsorted List: ", unsorted_list) print("Sorted List using Bubble Sort Technique: ", Bubble_Sort(unsorted_list)) ```
આઉટપુટ
બબલ સૉર્ટની સમય જટિલતા
- સૌથી ખરાબ કેસ: 2>n 2).
- શ્રેષ્ઠ કેસ: બબલ સૉર્ટ માટે શ્રેષ્ઠ સમય જટિલતા O(n) છે.
ફાયદાઓ
- તે મોટે ભાગે ઉપયોગમાં લેવાય છે અને અમલમાં મૂકવું સરળ છે.
- અમે ટૂંકા ગાળાના સ્ટોરેજના વપરાશ વિના ડેટા તત્વોને સ્વેપ કરી શકીએ છીએ.
- તેને ઓછી જરૂર પડે છે જગ્યા.
ગેરફાયદાઓ
- તે મોટી સંખ્યામાં ડેટા તત્વો સાથે કામ કરતી વખતે સારું પ્રદર્શન કરી શક્યું નથી.
- તે સૉર્ટ કરવા માટે દરેક “n” સંખ્યાના ડેટા ઘટકો માટે n 2 પગલાંની જરૂર છે.
- તે વાસ્તવિક દુનિયાની એપ્લિકેશનો માટે ખરેખર સારું નથી.
નિવેશ સૉર્ટ કરો
નિવેશ સૉર્ટ એ એક સરળ અને સરળ સૉર્ટિંગ ટેકનિક છે જે પ્લેયિંગ કાર્ડ્સને સૉર્ટ કરવા જેવું જ કામ કરે છે. નિવેશ સૉર્ટ દરેક ઘટકને એક પછી એક બીજા સાથે સરખાવીને તત્વોને સૉર્ટ કરે છે. જો એલિમેન્ટ બીજા કરતાં મોટું કે નાનું હોય તો એલિમેન્ટ્સ પસંદ કરવામાં આવે છે અને અન્ય એલિમેન્ટ સાથે અદલાબદલી કરવામાં આવે છે.
ચાલો એક ઉદાહરણ લઈએ
- અમને આપવામાં આવે છે “100, 50, 30, 40, 10” તત્વો ધરાવતો એરે.
- પ્રથમ, આપણે એરે ગોઠવીએ છીએ અને સરખામણી કરવાનું શરૂ કરીએ છીએ.તે.
- પ્રથમ પગલામાં “ 100 ” ની સરખામણી બીજા તત્વ “ 50 ” સાથે કરવામાં આવે છે. “50” ને “100” સાથે અદલાબદલી કરવામાં આવે છે કારણ કે તે વધારે છે.
- બીજા પગલામાં, ફરીથી બીજા ઘટક “100” ની સરખામણી ત્રીજા ઘટક “30” સાથે કરવામાં આવે છે અને સ્વેપ થાય છે.
- હવે, જો તમે જોશો તો “30” પ્રથમ સ્થાને આવે છે કારણ કે તે ફરીથી “50” કરતા નાનું છે.
- સરખામણી એરેના છેલ્લા ઘટક સુધી થશે અને અંતે, આપણને મળશે. સૉર્ટ કરેલ ડેટા.
પ્રોગ્રામ સૉર્ટ
``` def InsertionSort(array): for i in range(1, len(array)): key_value = array[i] j = i-1 while j >= 0 and key_value array[j] : array[j + 1] = array[j] j -= 1 array[j + 1] = key_value array = [11, 10, 12, 4, 5] print("The unsorted array: ", array) InsertionSort(array) print ("The sorted array using the Insertion Sort: ") for i in range(len(array)): print (array[i]) ```
આઉટપુટ
0![](/wp-content/uploads/guides/fn0zxgkuva-10.png)
નિવેશ સૉર્ટની સમય જટિલતા
- સૌથી ખરાબ કેસ: નિવેશ સૉર્ટ માટે સૌથી ખરાબ સમય જટિલતા O( n 2).
- સરેરાશ કેસ: નિવેશ સૉર્ટ માટે સરેરાશ સમય જટિલતા O( n 2) છે.
- શ્રેષ્ઠ કેસ: નિવેશ સૉર્ટ માટે શ્રેષ્ઠ સમય જટિલતા O(n) છે.
લાભ
- તે સરળ છે અને અમલમાં સરળ છે.
- તે નાની સંખ્યામાં ડેટા ઘટકો સાથે કામ કરતી વખતે સારું પ્રદર્શન કરે છે.
- તેના અમલીકરણ માટે તેને વધુ જગ્યાની જરૂર નથી.
ગેરફાયદાઓ
- ડેટા તત્વોની વિશાળ સંખ્યાને સૉર્ટ કરવી તે મદદરૂપ નથી.
- અન્ય સૉર્ટિંગ તકનીકોની સરખામણીમાં તે સારું પ્રદર્શન કરતી નથી.
મર્જ સૉર્ટ
આ સૉર્ટિંગ પદ્ધતિ ચોક્કસ ક્રમમાં તત્વોને સૉર્ટ કરવા માટે વિભાજીત અને જીતવાની પદ્ધતિનો ઉપયોગ કરે છે. મર્જ સૉર્ટની મદદથી સૉર્ટ કરતી વખતે, ધતત્વોને અર્ધભાગમાં વિભાજિત કરવામાં આવે છે અને પછી, તેઓ સૉર્ટ થાય છે. બધા અર્ધભાગને સૉર્ટ કર્યા પછી, ફરીથી તત્વો એક સંપૂર્ણ ક્રમ બનાવવા માટે જોડાય છે.
આ ટેકનિકને સમજવા માટે ચાલો એક ઉદાહરણ લઈએ
- અમને પ્રદાન કરવામાં આવે છે એરે “ 7, 3, 40, 10, 20, 15, 6, 5”. એરેમાં 7 તત્વો છે. જો આપણે તેને અડધા ભાગમાં વિભાજીત કરીએ ( 0 + 7 / 2 = 3 ).
- બીજા પગલામાં, તમે જોશો કે તત્વો બે ભાગમાં વહેંચાયેલા છે. દરેકમાં 4 તત્વો હોય છે.
- વધુમાં, તત્વોને ફરીથી વિભાજિત કરવામાં આવે છે અને દરેકમાં 2 તત્વો હોય છે.
- એરેમાં માત્ર એક જ તત્વ હાજર ન હોય ત્યાં સુધી આ પ્રક્રિયા ચાલુ રહેશે. પગલું નંબર નો સંદર્ભ લો. ચિત્રમાં 4.
- હવે, આપણે તત્વોને સૉર્ટ કરીશું અને જેમ જેમ આપણે વિભાજિત થયા છીએ તેમ તેમ જોડવાનું શરૂ કરીશું.
- પગલાં નં. 5 જો તમે જોશો કે 7 3 કરતા વધારે છે, તો અમે તેમની બદલી કરીશું અને તેને આગળના પગલામાં જોડીશું અને તેનાથી વિપરીત.
- અંતમાં, તમે જોશો કે અમારું એરે ચડતા ક્રમમાં સૉર્ટ થઈ રહ્યું છે.
મર્જ સૉર્ટ માટેનો પ્રોગ્રામ
``` def MergeSort(arr): if len(arr) > 1: middle = len(arr)//2 L = arr[:middle] R = arr[middle:] MergeSort(L) MergeSort(R) i = j = k = 0 while i len(L) and j len(R): if L[i] R[j]: arr[k] = L[i] i += 1 else: arr[k] = R[j] j += 1 k += 1 while i len(L): arr[k] = L[i] i += 1 k += 1 while j len(R): arr[k] = R[j] j += 1 k += 1 def PrintSortedList(arr): for i in range(len(arr)): print(arr[i],) print() arr = [12, 11, 13, 5, 6, 7] print("Given array is", end="\n") PrintSortedList(arr) MergeSort(arr) print("Sorted array is: ", end="\n") PrintSortedList(arr) ```
આઉટપુટ
મર્જ સૉર્ટની સમય જટિલતા
- સૌથી ખરાબ કેસ: મર્જ સૉર્ટ માટે સૌથી ખરાબ સમય જટિલતા છે O( n લોગ( n )).
- સરેરાશ કેસ: મર્જ સૉર્ટ માટે સરેરાશ સમય જટિલતા છે O( n લોગ( n )).
- શ્રેષ્ઠ કેસ: મર્જ સૉર્ટ માટે શ્રેષ્ઠ સમય જટિલતા છે O( n log( n )).
ફાયદાઓ
- આ સૉર્ટિંગ ટેકનિક માટે ફાઇલનું કદ કોઈ વાંધો નથી. 14 ઉદાહરણ તરીકે, લિંક કરેલી સૂચિઓ, ટેપ ડ્રાઇવ વગેરે.
ગેરફાયદાઓ
- તેને અન્યની સરખામણીમાં વધુ જગ્યાની જરૂર છે વર્ગીકરણ તકનીકો.
- તે અન્ય કરતા તુલનાત્મક રીતે ઓછી કાર્યક્ષમ છે.
ઝડપી સૉર્ટ
ક્વિક સોર્ટ ફરીથી વિભાજન અને વિજય પદ્ધતિનો ઉપયોગ સૂચિના ઘટકોને સૉર્ટ કરવા માટે કરે છે. અથવા એરે. તે પીવટ એલિમેન્ટ્સને લક્ષિત કરે છે અને પસંદ કરેલા પીવટ એલિમેન્ટ અનુસાર તત્વોને સૉર્ટ કરે છે.
ઉદાહરણ તરીકે
- અમને એરે આપવામાં આવે છે જેમાં " 1" તત્વો હોય છે ,8,3,9,4,5,7”.
- ચાલો આપણે “7” ને પાઇલોટ એલિમેન્ટ માની લઈએ.
- હવે આપણે એરેને એવી રીતે વિભાજિત કરીશું કે ડાબી બાજુ એ એલિમેન્ટ્સ ધરાવે છે જે પીવટ એલિમેન્ટ “7” કરતાં નાના હોય છે અને જમણી બાજુએ પિવટ એલિમેન્ટ “7” કરતાં મોટા તત્વો હોય છે.
- હવે અમારી પાસે બે એરે “1,3,4,5 છે. ” અને “ 8, 9 ”.
- ફરીથી, આપણે ઉપરની જેમ જ બંને એરેને વિભાજીત કરવા પડશે. માત્ર એટલો જ તફાવત છે કે પિવટ એલિમેન્ટ્સ બદલાઈ જાય છે.
- જ્યાં સુધી એરેમાં એક એલિમેન્ટ ન મળે ત્યાં સુધી આપણે એરેને વિભાજિત કરવાની જરૂર છે.
- અંતમાં, બધા પીવટ એલિમેન્ટ્સને a માં એકત્રિત કરો ડાબેથી જમણે ક્રમ અને તમને સૉર્ટ કરવામાં આવશેએરે.
ક્વિક સૉર્ટ માટેનો પ્રોગ્રામ
``` def Array_Partition( arr, lowest, highest ): i = ( lowest-1 ) pivot_element = arr[ highest ] for j in range( lowest, highest ): if arr[ j ] = pivot_element: i = i+1 arr[ i ], arr[ j ] = arr[ j ], arr[ i ] arr[ i+1 ], arr[ highest ] = arr[ highest ], arr[ i+1 ] return ( i+1 ) def QuickSort( arr, lowest, highest ): if len( arr ) == 1: return arr if lowest highest: pi = Array_Partition( arr, lowest, highest ) QuickSort( arr, lowest, pi-1 ) QuickSort( arr, pi+1, highest ) arr = [ 9, 6, 7, 8, 0, 4 ] n = len( arr ) print( " Unsorted array: ", arr ) QuickSort( arr, 0, n-1 ) print( " Sorted array using Quick Sort: " ) for i in range( n ): print( " %d " % arr[ i ] ) ```
આઉટપુટ
3>>>n 2).
ફાયદાઓ
- તે પાયથોનમાં શ્રેષ્ઠ સોર્ટિંગ અલ્ગોરિધમ તરીકે ઓળખાય છે.
- તે મોટા પ્રમાણમાં ડેટા હેન્ડલ કરતી વખતે ઉપયોગી છે.15
- તેને વધારાની જગ્યાની જરૂર નથી.
ગેરફાયદાઓ
- તેની સૌથી ખરાબ-કેસ જટિલતા બબલ સૉર્ટની જટિલતાઓ જેવી જ છે અને નિવેશ સૉર્ટ.
- જ્યારે અમારી પાસે પહેલેથી જ સૉર્ટ કરેલી સૂચિ હોય ત્યારે આ સૉર્ટિંગ પદ્ધતિ ઉપયોગી નથી.
હીપ સૉર્ટ
હીપ સૉર્ટ એ બાઈનરી સર્ચ ટ્રીનું અદ્યતન સંસ્કરણ છે. . ઢગલા સૉર્ટમાં, એરેનું સૌથી મોટું તત્વ વૃક્ષના મૂળ પર હંમેશા અને પછી મૂકવામાં આવે છે, લીફ ગાંઠો સાથેના મૂળની સરખામણીમાં.
ઉદાહરણ તરીકે:
- અમને “40, 100, 30, 50, 10” તત્વો ધરાવતો એરે પ્રદાન કરવામાં આવ્યો છે.
- “ પગલું 1 ” માં અમે એક વૃક્ષ બનાવ્યું છે. એરેમાં તત્વોની હાજરી.
- “ સ્ટેપ 2” માં આપણે મહત્તમ ઢગલા બનાવી રહ્યા છીએ એટલે કે ગોઠવવા માટે ઉતરતા ક્રમમાં તત્વો. મહાન તત્વ કરશેટોચ (મૂળ) પર રહે છે અને સૌથી નાનું તત્વ તળિયે રહે છે (લીફ ગાંઠો). આપેલ એરે “100, 50, 30, 40, 10” બને છે.
- “ પગલું 3 ” માં, આપણે ન્યૂનતમ ઢગલો બનાવી રહ્યા છીએ જેથી કરીને આપણે એરેના ન્યૂનતમ તત્વો શોધી શકીએ. આમ કરવાથી, આપણે મહત્તમ અને ન્યૂનતમ તત્વો મેળવીએ છીએ.
- “ સ્ટેપ 4 ” માં સમાન પગલાંઓ કરીને આપણને સૉર્ટ કરેલ એરે મળે છે.
હીપ સૉર્ટ માટેનો પ્રોગ્રામ
``` def HeapSortify( arr, n, i ): larger_element = i left = 2 * i + 1 right = 2 * i + 2 if left n and arr[ larger_element ] arr[ left ]: larger_element = left if right n and arr[ larger_element ] arr[ right ]: larger_element = right if larger_element != i: arr[ i ], arr[ larger_element ] = arr[ larger_element ], arr[ i ] HeapSortify( arr, n, larger_element ) def HeapSort( arr ): n = len( arr ) for i in range( n//2 - 1, -1, -1 ): HeapSortify( arr, n, i ) for i in range( n-1, 0, -1 ): arr[ i ], arr[ 0 ] = arr[ 0 ], arr[ i ] HeapSortify( arr, i, 0 ) arr = [ 11, 10, 12, 4, 5, 6 ] print( " The unsorted array is: ", arr ) HeapSort( arr ) n = len( arr ) print( " The sorted array sorted by the Heap Sort: " ) for i in range( n ): print( arr[ i ] ) ```
આઉટપુટ
હીપ સૉર્ટની સમય જટિલતા
- સૌથી ખરાબ કેસ: હીપ સૉર્ટ માટે સૌથી ખરાબ સમય જટિલતા છે O( n log( n )).
- સરેરાશ કેસ: હીપ સૉર્ટ માટે સરેરાશ સમય જટિલતા O( n) છે લોગ( n )).
- શ્રેષ્ઠ કેસ: હીપ સૉર્ટ માટે શ્રેષ્ઠ સમય જટિલતા છેO( n લોગ( n )).
ફાયદા
- તે મોટે ભાગે તેની ઉત્પાદકતાને કારણે વપરાય છે.
- તે ઇન-પ્લેસ અલ્ગોરિધમ તરીકે અમલમાં મૂકવું.
- તેને મોટા સ્ટોરેજની જરૂર નથી.
ગેરફાયદાઓ
- માટે જગ્યાની જરૂર છે તત્વોનું વર્ગીકરણ.
- તે તત્વોને સૉર્ટ કરવા માટે વૃક્ષ બનાવે છે.
સૉર્ટિંગ તકનીકો વચ્ચે સરખામણી
સૉર્ટિંગ પદ્ધતિ | 37
---|