Fêr bibe ka meriv çawa fonksiyona Rêzkirina Python ji bo rêzkirina lîste, rêze, ferhengan hwd bi karanîna awayên cûrbecûr û algorîtmayên di Python de bikar tîne:
Rêbazkirin teknîkek e ku ji bo cûrbecûr tê bikar anîn. Daneyên di rêza rêzê de bi rêza hilkişînê an daketinê.
Piraniya caran daneyên projeyên mezin di rêza rast de nayên rêz kirin û ev yek di dema gihîştin û girtina daneyên pêwîst de bi karîgerî pirsgirêkan çêdike.
Ji bo çareserkirina vê pirsgirêkê teknîkên cûrbecûr têne bikar anîn. Python teknolojiyên cûrbecûr cûrbecûr pêşkêşî dike mînak, Rêzkirina bubble, Rêzkirina Insertion, Merge sort, Quicksort, hwd.
Di vê tutorialê de, em ê bi karanîna algorîtmayên cihêreng di Python de çawa kar bikin.
Çêkirina Python
Hevoksaziya Cureya Python
Ji bo pêkanîna cûrbecûr, Python fonksiyona çêkirî, ango fonksiyona " sort () " peyda dike. Ji bo rêzkirina hêmanên daneya lîsteyê bi rêza hilkişînê an jî bi rêza daketinê tê bikaranîn.
Em vê têgehê bi mînakekê fam bikin.
Mînak 1:
``` a = [ 3, 5, 2, 6, 7, 9, 8, 1, 4 ] a.sort() print( “ List in ascending order: ”, a ) ```
Derketin:
Di vê nimûneyê de, navnîşa ne rêzkirî ya hatî dayîn bi karanîna fonksiyona " sort( )" li rêza hilkişînê tê rêz kirin. .
Mînak 2:
``` a = [ 3, 5, 2, 6, 7, 9, 8, 1, 4 ] a.sort( reverse = True ) print( “ List in descending order: ”, a ) ```
Derketin
Di mînaka jorîn de, navnîşa ne rêzkirî ya hatî dayîn bi karanîna fonksiyona " sort(berepaş = Rast)" bi rêza berevajî tê rêz kirin.
Demcih Cûreya bubble O(n) O(n2) O(n2) O(1) Erê Erê Cûreya têxê O(n) O(n2) O(n2) O(1) Erê Erê Cûrkirina zû O(n têketin(n)) O(n têketin(n)) O(n2) O(N) Na Erê Pêvekirin sort bike O(n têketin(n)) O(n têketin(n)) O(n têketin(n)) O(N) Erê Na Cûreya giravê E(n têketin (n)) O(n têketin(n)) O(n têketin(n)) O(1) Na Erê
Di tabloya berhevokê ya jorîn de "O" nîşana Ohya Mezin e ku li jor hatî ravekirin lê "n" û "N" tê wateya mezinahiya têketinê. .
Pirsên Pir Pir tên Pirsîn
Q #1) Di Python de celeb () çi ye?
Bersiv: Di Python de sort() fonksiyonek e ku ji bo rêzkirina lîste an rêzikên bi rêzek taybetî tê bikar anîn. Ev fonksiyon dema ku li ser projeyên mezin dixebitin pêvajoya veqetandinê hêsan dike. Ew ji bo pêşdebiran pir arîkar e.
Q #2) Hûn di Python de çawa rêz dikin?
Bersiv: Python teknîkên cûrbecûr cûrbecûr pêşkêşî dike ku ji bo rêzkirina hêmanê têne bikar anîn. Mînakî, Rêzkirina bilez, Rêzkirina hevgirtinê, Rêzkirina Bubble, Rêzkirina binavkirinê, hwd. Hemî teknîkên cûrbecûr bikêrhatî ne û hêsan têne fam kirin.
Q #3) Python çawa dixebite cure () kar?
Bersiv: Cure()fonksîyon rêzika diyarkirî wekî têketinek ji bikarhêner digire û bi karanîna algorîtmaya birêkûpêk bi rêzek taybetî rêz dike. Hilbijartina algorîtmê bi bijartina bikarhêner ve girêdayî ye. Bikarhêner li gorî hewcedariyên bikarhêner dikarin cûrbecûr Bizûk, Rêzkirina Merge, Rêzkirina Bubble, Rêzkirina Insertion hwd bikar bînin.
Encam
Di dersa jorîn de, me teknîka cûrbecûr di Python de bi hev re nîqaş kir. teknîkên cudakirina giştî.
- Bubble Sort
- Sertekirina Binavkirinê
- Teşkîlata Bilez
Em fêrî tevlihevî û avantajên wan ên demê bûn & dezawantajên. Me hemû teknîkên jorîn jî dan ber hev.
Tevliheviya Algorîtmayên BirêkûpêkkirinêTevliheviya Dem ew e ku dema kompîturê ji bo xebitandina algorîtmayek taybetî digire. Sê celeb rewşên tevliheviya demê hene.
- Rewşa herî xirab: Zêdetirîn dema ku kompîturê ji bo xebitandina bernameyê digire.
- Rewşa navîn: Dema ku kompîturê di navbera herî kêm û herî zêde de diavêje bernameyê.
- Rewşa herî baş: Kêmtirîn dema ku kompîturê ji bo xebitandina bernameyê digire. Ew rewşa herî baş a tevliheviya demê ye.
Nîşaneyên Tevliheviyê
Nîşana Oh ya Mezin, O: Nîşana oh ya mezin riya fermî ye ku ji bo gihandina sînorê jorîn dema xebitandina algorîtmayan. Ew ji bo pîvandina tevliheviya dema herî xirab tê bikar anîn an jî em dibêjin dema ku algorîtmaya herî mezin digire da ku temam bike.
Nîşana omega mezin, : Nîşana omega mezin e awayê fermî ji bo gihandina sînorê herî jêrîn a dema xebitandinê ya algorîtmayan. Ew ji bo pîvandina tevliheviya dema herî baş tê bikar anîn an jî em dibêjin dema ku algorîtmayê digire.
Nîşeya Theta, : Nîşana Theta riya fermî ya ragihandinê ye. her du tixûb ango jêr û jorîn dema ku algorîtma temam dike.
Rêbazên Rêzkirinê di Python de
Rêzkirina Bubble
Rêbaza Bubble riya herî hêsan e ji bo rêzkirina daneyan. ku teknîka hêza hov bi kar tîne. Ew ê li her hêmanek daneyê dubare bike û wê bi hêmanên din re bide berhevji bo ku daneyên curbecur ji bikarhênerê re peyda bikin.
Ka em mînakek vê teknîkê fam bikin:
- Ji me re rêzek ku hêmanên wê hene " 10, 40, 7, 3, 15”. Naha, pêdivî ye ku em bi karanîna teknîka sortkirina Bubble-ê ya li Python-ê vê rêzê bi rêzek hilkişînê saz bikin.
- Gava yekem ew e ku rêzê li rêza diyarkirî birêkûpêk bike.
- Di "Iteration 1"ê de, em hêmana yekem a rêzê yek bi yek bi hêmanên din re didin ber hev.
- Tîrên sor berawirdkirina hêmanên pêşîn bi hêmanên din ên rêzefîlmê re diyar dikin.
- Heke hûn bala xwe bidin "10" ji "40" piçûktir e, ji ber vê yekê ew di heman de dimîne. cîh lê hêmana paşîn "7" ji "10"ê piçûktir e. Ji ber vê yekê ew tê guheztin û di rêza yekem de tê.
- Pêvajoya li jor dê dîsa û carek din were kirin da ku hêmanan rêz bike.
-
- Di "Iteration 2" de hêmana duyemîn bi hêmanên din ên rêzefîlmê re tê berhev kirin.
- Eger hêmana berhevdanê piçûk be, wê hingê ew ê were guhertin, wekî din ew ê li heman cîhî bimîne. hêmana sêyem bi hêmanên din ên rêzefîlmê re tê berhev kirin. "Iteration 4" hêmana duyemîn a dawîn bi hêmanên din ên rêzê re tê berhev kirin.
- Divê gavê rêzik bi rêza hilkişînê tê rêz kirin.
Bernameya ji bo cureya Bubble
``` 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)) ```
Derketin
Tevlîheviya Demê ya cureya Bubble
- Rewşa herî xirab: Tevliheviya dema herî xirab a ji bo cûrbecûr bilbil O( n 2) ye.
- Rewşa navîn: Tevliheviya dema navîn a ji bo cûrbecûr bubble O ye( n 2).
- Hêza herî baş: Tevliheviya dema herî baş a ji bo cûrbecûr bilbil O(n) e.
Awantaj
- Bi piranî tê bikaranîn û bi hêsanî pêk tê.
- Em dikarin hêmanên daneyê bêyî xerckirina hilanîna demkurt biguherînin.
- Kêmtir hewce dike cih.
Dezavantaj
- Dema ku bi hejmareke mezin ji hêmanên daneyê yên mezin re mijûl dibû baş nedihat.
- Ew n 2 gavan ji bo her "n" hejmara hêmanên daneyê hewce dike ku werin rêz kirin.
- Ew bi rastî ji bo sepanên cîhana rast ne baş e.
Têxistin Rêzkirin
Rêzkirina binavkirinê teknîkek veqetandî ya hêsan û hêsan e ku mîna cûrbecûr kartên lîstikê dixebite. Rêzkirina têketina hêmanan bi berhevkirina her hêmanan yek bi yek bi ya din re rêz dike. Ger hêman ji ya din mezintir an piçûktir be, hêman têne hilbijartin û bi hêmanek din re têne guheztin.
Werin em mînakek bigirin
- Ji me re tê pêşkêş kirin komek ku hêmanên "100, 50, 30, 40, 10" hene.
- Pêşî, em rêzê rêz dikin û dest bi berhevdanê dikin.ew.
- Di gava yekem de "100" bi hêmana duyemîn "50" re tê berawirdkirin. “50” ji ber ku mezintir e bi “100”ê tê guheztin.
- Di gava duyemîn de dîsa hêmana duyemîn “100” bi hêmana sêyemîn “30” re tê berawirdkirin û tê guheztin.
- Niha, heke hûn bala xwe bidin "30" tê di rêza yekem de ji ber ku ew dîsa ji "50"-ê piçûktir e.
- Dê berawirdkirin heya hêmana paşîn a rêzek pêk were û di dawiyê de, em ê bigihîjin Daneyên birêkûpêk kirin.
Bernameya ji bo cûrbecûr danînê
``` 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]) ```
Derketin
Tevliheviya Demjimêra Cûreya Têketinê
- Rewşa Herî Xirab: Tevliheviya dema herî xirab a ji bo cûrbecûr têxistin O( n 2). n Rewşa herî baş: Tevliheviya dema herî baş a ji bo cûrbecûr binavkirinê O(n) ye.
Awantaj
- Hêsan e û pêkanîna wê hêsan e.
- Dema ku bi hejmareke hindik hêmanên daneyê re mijûl dibe baş dixebite.
- Ji bo pêkanîna wê cîhê zêde hewce nake.
Dezavantaj
- Civandina hejmareke mezin ji hêmanên daneyê ne arîkar e.
- Dema ku li gorî teknîkên din ên cûrbecûr tê berhev kirin, ew baş naxebite.
Rêzkirina hevgirtinê
Ev awayê veqetandinê rêbaza dabeşkirin û têkbirinê bikar tîne da ku hêmanan bi rêzek taybetî birêkûpêk bike. Dema ku bi alîkariya merge sort veqetandin, bihêman di nîvan de têne dabeş kirin û paşê, ew têne rêz kirin. Piştî rêzkirina hemî nîvan, dîsa hêman li hev dicivin da ku rêzek bêkêmasî pêk bînin.
Ka em vê teknîkê fam bikin mînakek
- Ji me re tê peyda kirin. komek "7, 3, 40, 10, 20, 15, 6, 5". Di array de 7 hêman hene. Ger em wê bikin nîv ( 0 + 7 / 2 = 3 ).
- Di gava duyemîn de hûn ê bibînin ku hêman bûne du beş. Her yekê 4 hêmanan tê de hene.
- Herweha hêman dîsa têne dabeşkirin û her yek ji wan 2 hêman hene.
- Ev pêvajo dê berdewam bike heya ku tenê hêmanek di rêzikekê de hebe. Binêre gava no. Di wêneyê de 4.
- Niha, em ê hêmanan rêz bikin û wek ku em hatine dabeşkirin, dest bi tevlîhevkirina wan bikin.
- Di pêngava jimare de. 5 heke hûn bala xwe bidin 7 ji 3-yê mezintir e, ji ber vê yekê em ê wan biguhezînin û di gava pêş de û berevajî wê tevlê bibin.
- Di dawiyê de, hûn ê bala xwe bidin ku rêzika me bi rêza hilkişînê tê rêz kirin.
Bernameya ji bo curekirina hevgirtinê
``` 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) ```
Derketin
Tevlîheviya Demjimêra Rêzkirina Hevgirtinê
- Rewşa Herî Xirab: Tevliheviya dema herî xirab ji bo cureya hevgirtinê O( n log( n )).
- Rewşa navîn: Tevliheviya dema navîn ji bo cûrbecûrhevkirinê O( n log( n )).
- Hêza herî baş: Tevliheviya dema herî baş ji bo cureya hevgirtinê O( n log( n )).
Awantaj
- Mezinahiya pelê ji bo vê teknîka cudakirinê ne girîng e.
- Ev teknîk ji bo daneyên ku bi gelemperî bi rêzek rêzê têne gihîştin baş e. . teknîkên rêzkirinê.
- Ew li gorî yên din kêmtir bikêrhatî ye.
Rêzkirina bilez
Rêzkirina bilez dîsa ji bo rêzkirina hêmanên Lîsteyê rêbaza dabeşkirin û bidestveanîna bikar tîne. an array. Ew hêmanên pivot hedef digire û hêmanan li gorî hêmanên pivot ên hilbijartî rêz dike.
Mînakî
- Ji me re rêzek ku hêmanên wê hene “ 1 ,8,3,9,4,5,7 ".
- Werin em "7" wekî hêmanek pîlot bihesibînin.
- Niha em ê rêzê bi vî rengî dabeş bikin ku di milê çepê de hêmanên ku ji hêmana pivot "7" piçûktir in û li aliyê rastê jî hêmanên ji hêmana pivot "7" mezintir dihewîne.
- Niha du rêzikên me hene " 1,3,4,5 ” û ” 8, 9 ” .
- Dîsa, divê em her du rêzikan bi heman rengî wekî ku me li jor kir, dabeş bikin. Cudahiya tenê ew e ku hêmanên pivot têne guheztin.
- Divê em rêzan dabeş bikin heya ku em di rêzê de yek elementek bi dest bixin.
- Di dawiyê de, hemî hêmanên pivot di nav rêzekê de kom bikin. rêzê ji çepê ber bi rastê û hûn ê rêzkirî bistîninarray.
Bernameya ji bo curekirina bilez
``` 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 ] ) ```
Derketin
Tevliheviya Demê ya Rêzkirina Bilez
- Rewşa Herî Xirab: Tevliheviya dema herî xirab ji bo cûrbecûr Zû zû O ye( n 2).
- Rewşa navîn: Tevliheviya dema navîn a ji bo sortkirina bilez O( n log( n ) ye ).
- Rewşa herî baş: Tevliheviya dema herî baş a ji bo sorkirina bilez O( n log( n )).
Awantaj
- Ew di Pythonê de wekî algorîtmaya herî baş tertîbkirinê tê zanîn.
- Di dema hilgirtina daneya mezin de bikêr e.
- Ew cîhek zêde hewce nake.
Dezavantaj
- Tevheviya wê ya herî xirab dişibihe tevliheviyên cureya bilbilê û curekirina binavkirinê.
- Ev rêbaza veqetandinê ne bikêrhatî ye dema ku me ji berê ve lîsteya rêzkirî hebe.
Rêzkirina giravê
Rêbaza giravê guhertoya pêşkeftî ya dara lêgerîna Binaryê ye. . Di cûrbecûr komê de, hêmana herî mezin a rêzefîlmê her dem li ser koka darê tê danîn û dûv re, bi koka bi girêkên pelan re tê berhev kirin.
Mînakî:
- Ji me re rêzek ku hêmanên " 40, 100, 30, 50, 10" hene, ji me re tê pêşkêş kirin.
- Di " gav 1 de " me darek li gorî hebûna hêmanan di rêzê de.
- Di " gava 2" de " em herî zêde giriftê çêdikin, ango rêzkirina hêmanên di rêza daketinê de. Hêmana herî mezin dêli jor (kok) rûdine û hêmana herî piçûk li jêr dimîne (girêkên pelan). Rêzeya hatî dayîn dibe " 100, 50, 30, 40, 10 ".
- Di “ gav 3 de ” , em ji bo ku em karibin hêmanên hindiktirîn ên arrayekê bibînin, herî kêm giravê çêdikin. Bi vî karî em hêmanên herî zêde û hindik distînin.
- Di “ gav 4 de ” bi pêkanîna heman gavan em array rêzkirî distînin.
Bernameya ji bo cûrbecûr Heap
``` 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 ] ) ```
Derketin
Tevliheviya demê ya cureya Heapê
- Rewşa herî xirab: Tevliheviya dema herî xirab a ji bo celebê Heap e. O( n log( n )).
- Rewşa navîn: Tevliheviya dema navîn ji bo cureya Heap O( n log( n )).
- Hêza herî baş: Tevliheviya dema herî baş a ji bo cureya Heap isO( n log( n )).
Awantaj
- Bi piranî ji ber berhemdariya xwe tê bikaranîn.
- Dikare wekî algorîtmayek di cih de were bicîh kirin.
- Pêdiviya wê hilanîna mezin nîne. veqetandina hêmanan.
- Ji bo veqetandina hêmanan darê çêdike.
Berawirdkirina Di Navbera Teknîkên Bicihkirinê de
Rêbaza Rêzkirinê | Tevliheviya demê ya herî baş | Tevheviya dema mesela navîn | Tevliheviya dema rewşa herî xirab | tevliheviya fezayê | îstiqrar | Li - |
---|