Python хэл дээрх төрөл бүрийн эрэмбэлэх арга, алгоритмуудыг ашиглан жагсаалт, массив, толь бичиг зэргийг эрэмбэлэхийн тулд Python Sort функцийг хэрхэн ашиглах талаар сурах:
Эрэмбэлэх нь эрэмбэлэх арга юм. өгөгдлүүдийг өсөх эсвэл буурах дарааллаар байрлуулна.
Ихэнх тохиолдолд том төслүүдийн өгөгдөл зөв дарааллаар байршдаггүй бөгөөд энэ нь шаардлагатай өгөгдөлд үр ашигтай хандах, татахад асуудал үүсгэдэг.
Энэ асуудлыг шийдвэрлэхийн тулд эрэмбэлэх аргыг ашигладаг. Python нь төрөл бүрийн эрэмбэлэх аргуудыг өгдөг жишээ нь, Хөөсөөр эрэмбэлэх, Оруулах эрэмбэлэх, Нэгтгэх эрэмбэлэх, Түргэн эрэмбэлэх гэх мэт.
Энэ зааварт бид Python-д төрөл бүрийн алгоритмуудыг ашиглан эрэмбэлэх нь хэрхэн явдгийг ойлгох болно.
Python эрэмбэлэх
Python эрэмбэлэх синтакс
Эрэмбэлэхийн тулд Python нь суурилагдсан функцийг, тухайлбал “ sort() ” функцийг хангадаг. Энэ нь жагсаалтын өгөгдлийн элементүүдийг өсөх эсвэл буурах дарааллаар эрэмбэлэхэд хэрэглэгддэг.
Энэ ойлголтыг жишээгээр ойлгоцгооё.
Жишээ 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( урвуу = Үнэн ) ” функцийг ашиглан урвуу дарааллаар эрэмбэлдэг.
Цаггазар Хөөс ялгах O(n) O(n2) O(n2) O(1) Тийм Тийм Оруулах эрэмбэ 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 “ нь дээр тайлбарласан Big O тэмдэглэгээ, харин “ n ” болон “ N ” нь оролтын хэмжээг илэрхийлнэ. .
Түгээмэл асуултууд
Асуулт №1) Python хэл дээр sort () гэж юу вэ?
Хариулт: Python хэл дээр sort() нь жагсаалт эсвэл массивыг тодорхой дарааллаар эрэмбэлэх функц юм. Энэ функц нь том төслүүд дээр ажиллаж байхдаа эрэмбэлэх үйл явцыг хөнгөвчилдөг. Энэ нь хөгжүүлэгчдэд маш их тустай.
Асуулт №2) Та Python дээр хэрхэн ангилах вэ?
Хариулт: Python нь элементийг эрэмбэлэхийн тулд ашигладаг төрөл бүрийн эрэмбэлэх аргуудыг өгдөг. Жишээ нь, Түргэн эрэмбэлэх, Нэгтгэх эрэмбэлэх, Бөмбөлөгт эрэмбэлэх, Оруулах эрэмбэлэх гэх мэт. Бүх эрэмбэлэх арга нь үр дүнтэй бөгөөд ойлгоход хялбар.
Асуулт №3) Python хэрхэн ажилладаг вэ? ангилах () ажил?
Хариулт: Sort()функц нь өгөгдсөн массивыг хэрэглэгчээс оролт болгон авч, эрэмбэлэх алгоритмыг ашиглан тодорхой дарааллаар эрэмбэлдэг. Алгоритмыг сонгох нь хэрэглэгчийн сонголтоос хамаарна. Хэрэглэгчид хэрэглэгчийн хэрэгцээ шаардлагаас хамааран Түргэн эрэмбэлэх, Нэгтгэх эрэмбэлэх, Бөмбөрцөгт эрэмбэлэх, Оруулах эрэмбэлэх гэх мэтийг ашиглаж болно.
Дүгнэлт
Дээрх зааварт бид Python хэл дээрх эрэмбэлэх аргачлалын талаар ярилцсан. ерөнхий ангилах техник.
- Хөөсөөр эрэмбэлэх
- Оруулахаар эрэмбэлэх
- Түргэн эрэмбэлэх
Бид тэдний цаг хугацааны нарийн төвөгтэй байдал, давуу талуудын талаар олж мэдсэн & сул талууд. Мөн бид дээрх бүх техникийг харьцуулсан.
Эрэмбэлэх алгоритмын нарийн төвөгтэй байдалЦагийн нарийн төвөгтэй байдал гэдэг нь тодорхой алгоритмыг ажиллуулахын тулд компьютер зарцуулсан хугацааг хэлнэ. Энэ нь гурван төрлийн цаг хугацааны нарийн төвөгтэй тохиолдолтой.
- Хамгийн муу тохиолдол: Компьютерийн програмыг ажиллуулахад зарцуулсан хамгийн их хугацаа.
- Дундаж тохиолдол: Компьютерийн програмыг ажиллуулахад зарцуулсан хамгийн бага ба хамгийн их хугацаа.
- Хамгийн сайн тохиолдол: Компьютерийн програмыг ажиллуулахад зарцуулсан хамгийн бага хугацаа. Энэ нь цаг хугацааны нарийн төвөгтэй байдлын хамгийн сайн тохиолдол юм.
Нарийн төвөгтэй байдлын тэмдэглэгээ
Big Oh Notation, O: Big oh тэмдэглэгээ нь дээд хязгаарыг дамжуулах албан ёсны арга юм. алгоритмуудын ажиллах хугацаа. Энэ нь хамгийн муу тохиолдлын цаг хугацааны нарийн төвөгтэй байдлыг хэмжихэд хэрэглэгддэг эсвэл алгоритмыг дуусгахад зарцуулсан хамгийн их хугацааг хэлнэ.
Том омега тэмдэглэгээ, : Том омега тэмдэглэгээ нь Алгоритмуудын ажиллах хугацааны хамгийн бага хязгаарыг дамжуулах албан ёсны арга. Энэ нь хамгийн сайн цагийн нарийн төвөгтэй байдлыг хэмжихэд хэрэглэгддэг эсвэл бид алгоритмын зарцуулсан цагийг маш сайн гэж хэлдэг.
Тета тэмдэглэгээ, : Тета тэмдэглэгээ нь дамжуулах албан ёсны арга юм. аль аль нь хязгаар, өөрөөр хэлбэл алгоритмын гүйцээхэд зарцуулсан хугацааны доод ба дээд.
Python дахь эрэмбэлэх аргууд
Хөөсөөр эрэмбэлэх
Хөөсөөр эрэмбэлэх нь өгөгдлийг эрэмбэлэх хамгийн энгийн арга юм. харгис хүчний техникийг ашигладаг. Энэ нь өгөгдлийн элемент бүрийг давтаж, бусад элементүүдтэй харьцуулах болнохэрэглэгчдэд эрэмбэлэгдсэн өгөгдлийг өгөхийн тулд.
Энэ техникийг ойлгохын тулд жишээ авъя:
- Бидэнд " элементүүдтэй массив өгсөн. 10, 40, 7, 3, 15 ". Одоо бид Python хэл дээрх Bubble sort техникийг ашиглан энэ массивыг өсөх дарааллаар цэгцлэх хэрэгтэй.
- Хамгийн эхний алхам бол массивыг өгөгдсөн дарааллаар нь цэгцлэх явдал юм.
- “ Давталт 1 ”-д бид массивын эхний элементийг бусад элементүүдтэй нэг нэгээр нь харьцуулж байна.
- Улаан сумнууд нь массивын бусад элементүүдтэй эхний элементүүдийг харьцуулахыг тайлбарлаж байна.
- Хэрэв та "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)) ```
Гарц
Хөөсний ангилах цаг хугацааны нарийн төвөгтэй байдал
- Хамгийн муу тохиолдол: Бөмбөлөгөөр ангилах хамгийн муу цагийн нарийн төвөгтэй байдал нь O( n 2).
- Дундаж тохиолдол: Бөмбөлөг эрэмбэлэх дундаж хугацааны нарийн төвөгтэй байдал нь O(4)>n 2).
- Хамгийн сайн тохиолдол: Хөөс ялгах хамгийн сайн цаг хугацааны нарийн төвөгтэй байдал нь O(n).
Давуу талууд
- Энэ нь ихэвчлэн ашиглагддаг бөгөөд хэрэгжүүлэхэд хялбар.
- Бид богино хугацааны хадгалалт ашиглахгүйгээр өгөгдлийн элементүүдийг сольж болно.
- Энэ нь бага хугацаа шаарддаг. орон зай.
Сул тал
- Олон тооны том өгөгдлийн элементүүдтэй ажиллахдаа сайн ажиллаагүй.
- Энэ нь Эрэмбэлэхийн тулд "n" тооны өгөгдлийн элемент бүрт n 2 алхам шаардлагатай.
- Энэ нь бодит хэрэглээний програмуудад тийм ч сайн биш юм.
Оруулах Эрэмбэ
Оруулах эрэмбэлэх нь тоглоомын хөзрийг эрэмбэлэхтэй адил үйлчилдэг хялбар бөгөөд энгийн эрэмбэлэх арга юм. Оруулах эрэмбэ нь элемент бүрийг нэг нэгээр нь нөгөөтэй нь харьцуулах замаар элементүүдийг эрэмбэлдэг. Элементүүд нь нөгөөгөөсөө их эсвэл бага байвал элементүүдийг сонгож, нөгөө элементтэй нь сольдог.
Жишээ авч үзье
- Бидэнд өгсөн. “ 100, 50, 30, 40, 10” элементүүдтэй массив.
- Эхлээд бид массивыг цэгцэлж, харьцуулж эхэлнэ.Энэ.
- Эхний алхамд “ 100 ”-г хоёр дахь “ 50 ” элементтэй харьцуулна. “ 50 ” нь их байгаа тул “ 100 ” -ээр солигдоно.
- Хоёр дахь алхамд дахин хоёр дахь элемент “ 100 ”-г гурав дахь “ 30 ” элементтэй харьцуулж, солигдоно.
- Одоо, хэрэв та анзаарвал "30" нь "50"-аас бага байгаа тул эхний байранд орж байна.
- Харьцуулалт нь массивын сүүлчийн элемент хүртэл хийгдэх ба төгсгөлд нь бид дараахыг авна. эрэмбэлэгдсэн өгөгдөл.
Insertion sort
``` 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]) ```
Гаралт
Оруулах цаг хугацааны нарийн төвөгтэй байдал
- Хамгийн муу тохиолдол: Оруулахын хамгийн муу цагийн нарийн төвөгтэй байдал нь O( n 2).
- Дундаж тохиолдол: Оруулах эрэмбийн дундаж хугацааны нарийн төвөгтэй байдал нь O( n 2).
- Хамгийн сайн тохиолдол: Оруулахын тулд цаг хугацааны хамгийн нарийн төвөгтэй байдал нь O(n).
Давуу тал
- Энгийн мөн хэрэгжүүлэхэд хялбар.
- Цөөн тооны өгөгдлийн элементүүдтэй ажиллахдаа сайн ажилладаг.
- Үүнийг хэрэгжүүлэхэд илүү зай шаардагдахгүй.
Сул тал
- Өгөгдлийн олон тооны элементүүдийг ангилах нь тус болохгүй.
- Бусад эрэмбэлэх арга техниктэй харьцуулахад энэ нь сайн ажилладаггүй.
Нэгтгэх эрэмбэ
Энэ эрэмбэлэх арга нь элементүүдийг тодорхой дарааллаар эрэмбэлэхийн тулд хуваах ба ялах аргыг ашигладаг. Merge sort-ын тусламжтайгаар эрэмбэлэх явцад theэлементүүдийг хагас болгон хувааж, дараа нь эрэмбэлдэг. Бүх талыг нь ангилсны дараа элементүүд дахин нэгдэж төгс дараалал үүсгэнэ.
Энэ техникийг ойлгохын тулд жишээ авъя
- Бидэнд дараах зүйлс бий. "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 log( n )).
- Дундаж тохиолдол: Нэгтгэх эрэмбийн дундаж нарийн төвөгтэй байдал нь O( n log(4)>n )).
- Хамгийн сайн тохиолдол: Нэгтгэхийн тулд цаг хугацааны хамгийн сайн төвөгтэй байдал нь O( n юм.log( n )).
Давуу талууд
- Энэ эрэмбэлэх техникт файлын хэмжээ хамаагүй.
- Энэ техник нь ерөнхийдөө дараалсан дарааллаар ханддаг өгөгдөлд тохиромжтой. Жишээ нь, холбогдсон жагсаалт, соронзон хальсны хөтөч гэх мэт.
Сул тал
- Бусадтай харьцуулахад илүү их зай шаарддаг. эрэмбэлэх техник.
- Энэ нь бусадтай харьцуулахад харьцангуй бага үр ашигтай.
Түргэн эрэмбэлэх
Шуурхай эрэмбэлэх нь Жагсаалтын элементүүдийг эрэмбэлэхийн тулд хуваах, ялах аргыг дахин ашигладаг. эсвэл массив. Энэ нь эргэлтийн элементүүдэд чиглэж, сонгосон пивот элементийн дагуу элементүүдийг эрэмбэлдэг.
Жишээ нь
- Бидэнд " 1" элементүүдтэй массив өгсөн. ,8,3,9,4,5,7 ”.
- “ 7 ”-г туршилтын элемент гэж үзье.
- Одоо бид массивыг дараах байдлаар хуваах болно. зүүн тал нь “ 7 ” эргэлтийн элементээс жижиг элементүүдийг, баруун талд нь “ 7 ” эргүүлэх элементээс их элементүүдийг агуулна.
- Бидэнд одоо “ 1,3,4,5” гэсэн хоёр массив байна. ” ба “ 8, 9 ”.
- Дахин хэлэхэд бид дээрх хоёр массивыг яг адилхан хуваах ёстой. Цорын ганц ялгаа нь пивот элементүүд өөрчлөгддөг.
- Бид массивын нэг элементийг авах хүртэл массивуудыг хуваах хэрэгтэй.
- Төгсгөлд нь бүх пивот элементүүдийг цуглуулах хэрэгтэй. зүүнээс баруун тийш дарааллаар эрэмбэлэх болномассив.
Түргэн эрэмбэлэх програм
``` 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 ] ) ```
Гаралт
Түргэн эрэмбэлэх цагийн нарийн төвөгтэй байдал
- Хамгийн муу тохиолдол: Түргэн эрэмбэлэх цаг хугацааны хамгийн төвөгтэй байдал нь O(4)>n 2).
- Дундаж тохиолдол: Түргэн эрэмбэлэх дундаж хугацааны нарийн төвөгтэй байдал нь O( n log( n ) ).
- Хамгийн сайн тохиолдол: Түргэн эрэмбэлэх хамгийн сайн цагийн нарийн төвөгтэй байдал нь O( n log( n )).
Давуу тал
- Энэ нь Python-д хамгийн шилдэг эрэмбэлэх алгоритм гэдгээрээ алдартай.
- Их хэмжээний өгөгдөлтэй ажиллахад хэрэгтэй.
- Энэ нь нэмэлт зай шаарддаггүй.
Сул тал
- Түүний хамгийн муу нарийн төвөгтэй байдал нь хөөс ялгах болон оруулах эрэмбэлэх.
- Бидэнд эрэмбэлэгдсэн жагсаалт байгаа үед энэ эрэмбэлэх арга нь ашиггүй.
Нуруулдан эрэмбэлэх
Нуулдан эрэмбэлэх нь хоёртын хайлтын модны дэвшилтэт хувилбар юм. . Нуруулдан ангилахдаа массивын хамгийн том элементийг модны үндэс дээр байнга байрлуулж, дараа нь навчны зангилаатай үндэстэй харьцуулна.
Жишээ нь:
- Бидэнд “ 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) log( n )).
- Хамгийн сайн тохиолдол: Нуруулдан ангилах хамгийн сайн цагийн нарийн төвөгтэй байдал нь O( n log(4)>n )).
Давуу тал
- Бүтээмж сайтай учраас ихэвчлэн ашигладаг.
- Энэ нь боломжтой. газар дээр нь алгоритм болгон хэрэгжүүлнэ.
- Их хэмжээний багтаамж шаарддаггүй.
Сул тал
- Тусгай зай хэрэгтэй. элементүүдийг эрэмбэлэх.
- Энэ нь элементүүдийг ангилах модыг болгодог.
Эрэмбэлэх аргуудын харьцуулалт
Ангилах арга | Хамгийн сайн цагийн нарийн төвөгтэй байдал | Дундаж тохиолдолын нарийн төвөгтэй байдал | Хамгийн муу цагийн нарийн төвөгтэй байдал | Сансрын нарийн төвөгтэй байдал | Тогтвортой байдал | Д - |
---|