์ ๋ ฌ ์ด๋ ๋ฌผ๊ฑด์ ํฌ๊ธฐ ์์ผ๋ก ์ค๋ฆ์ฐจ์์ด๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋์ด ํ ๊ฒ์ด๋ค.
๋จ์ํ์ง๋ง ๋นํจ์จ์ : ์ฝ์
, ์ ํ, ๋ฒ๋ธ ์ ๋ ฌ
๋ณต์กํ์ง๋ง ํจ์จ์ : ํต, ํํ, ํฉ๋ณ, ๊ธฐ์ ์ ๋ ฌ
์ ํ์ ๋ ฌ(selection sort)
๊ฐ์ฅ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ํ ํด ๋งจ ์์ ์๋ ๋ฐ์ดํฐ์ ๋ฐ๊พธ๊ณ , ๊ทธ ๋ค์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ํํด ์์์ ๋ ๋ฒ์งธ ๋ฐ์ดํฐ์ ๋ฐ๊พธ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ ๋ฐฉ๋ฒ
์ฃผ์ด์ง ๋ฆฌ์คํธ ์ค์ ์ต์๊ฐ์ ์ฐพ๋๋ค.
๊ทธ ๊ฐ์ ๋งจ ์์ ์์นํ ๊ฐ๊ณผ ๊ต์ฒดํ๋ค(ํจ์ค(pass)).
๋งจ ์ฒ์ ์์น๋ฅผ ๋บ ๋๋จธ์ง ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๊ต์ฒดํ๋ค.
Copy void selection_sort(int list[], int n){
int i, j, least,tmp;
for(i=0;i<n-1;i++){
least = i;
for(j=i+1;j<n;j++){
if(list[j]<list[least]){
least = j;
}
SWAP(list[i],list[j],tmp);
}
}
}
Copy array = [7,5,9,0,3,1,6,2,4,8]
for i in range(0,len(array)-1):
min = i;
for j in range(i+1,len(array)):
if array[j] < array[min]:
min = j;
array[i], array[min] = array[min], array[i];
print(array)
๋น๊ตํ๋ ๊ฒ์ด ์์ ์๊ฐ์ ์ด๋ฃจ์ด์ง๋ค๋ ๊ฐ์ ์๋, n๊ฐ์ ์ฃผ์ด์ง ๋ฆฌ์คํธ๋ฅผ ์ด์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ ๋ ฌํ๋ ๋ฐ์๋ O(n^2) ๋งํผ์ ์๊ฐ ์ด ๊ฑธ๋ฆฐ๋ค. ์ด๋ ์ ๋ ฌํด์ผํ๋ ๋ฐ์ดํฐ ๊ฐ์๊ฐ 100๋ฐฐ ๋์ด๋๋ฉด ์ด๋ก ์ ์ผ๋ก ์ํ์๊ฐ์ 10,000๋ฐฐ ๋์ด๋๋ ๊ฒ์ด๋ค.
์ฝ์
์ ๋ ฌ(insertion sort)
์๋ฃ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์์์๋ถํฐ ์ฐจ๋ก๋๋ก ์ด๋ฏธ ์ ๋ ฌ๋ ๋ฐฐ์ด ๋ถ๋ถ๊ณผ ๋น๊ตํ์ฌ, ์์ ์ ์์น๋ฅผ ์ฐพ์ ์ฝ์
ํจ์ผ๋ก์จ ์ ๋ ฌ์ ์์ฑํ๋ ์๊ณ ๋ฆฌ์ฆ ์ด๋ค.
์ฝ์
์ ๋ ฌ์ ํ์ํ ๋๋ง ์์น๋ฅผ ๋ฐ๊พธ๋ฏ๋ก ๋ฐ์ดํฐ๊ฐ ๊ฑฐ์ ์ ๋ ฌ๋์ด ์์ ๋ ํจ์ฌ ํจ์จ์ ์ด๋ค.
Copy void insert_sort(int arr[],int n){
int i, key, j;
for (i = 1; i < n; i++)
{
key = arr[i];
j = i-1;
while (j >= 0 && arr[j] > key)
{
arr[j+1] = arr[j];
j = j-1;
}
arr[j+1] = key;
}
}
Copy def insert_sort(array):
# print(array)
for i in range(1,len(array)):
for j in range(i,0,-1):
if array[j] < array[j-1]:
array[j], array[j-1] = array[j-1], array[j]
else:
break
# print(array)
return array
๋ณต์ก๋
์ต์ ์ ๊ฒฝ์ฐ(์ด๋ฏธ ์ ๋ ฌ) : O(n)
์ต์
์ ๊ฒฝ์ฐ(์ญ์์ผ๋ก ์ ๋ ฌ๋ ๊ฒฝ์ฐ) : O(n^2)
๋ณดํต ์ฝ์
์ ๋ ฌ์ด ํต ์ ๋ ฌ๋ณด๋ค ๋นํจ์จ ์ ์ด๋, ์ด๋ฏธ ์ ๋ ฌ๋์ด์๋ ๊ฒฝ์ฐ์๋ ํต์ ๋ ฌ๋ณด๋ค ๋ ๊ฐ๋ ฅํ๋ค. ๋ฐ๋ผ์ ๊ฑฐ์ ์ ๋ ฌ๋์ด ์๋ ์ํ๋ผ๋ฉด, ์ฝ์
์ ๋ ฌ์ ์ด์ฉํ๋ ๊ฒ์ด ๋ ์ข๋ค.
๋ฒ๋ธ์ ๋ ฌ(bubble sort)
์ธ์ ํ 2๊ฐ์ ๋ ์ฝ๋๋ฅผ ๋น๊ตํ์ฌ ์์๋๋ก ๋์ด ์์ง ์์ผ๋ฉด ์๋ก ๊ตํํ๋ค.
Copy void bubble_sort(int list[], int n){
int i,j,tmp;
for(i=n-1;i>0;i--){
for(j=0;j<i;j++){
if(list[i]<list[j])SWAP(list[i], list[j], tmp);
}
}
}
๋ณต์ก๋(์ต์, ํ๊ท , ์ต์
) : O(n^2)
ํฉ๋ณ ์ ๋ ฌ(merge_sort)
๋ฆฌ์คํธ๋ฅผ ๋ ๊ฐ์ ๊ท ๋ฑํ ํฌ๊ธฐ๋ก ๋ถํ ํ๊ณ ๋ถํ ๋ ๋ถ๋ถ๋ฆฌ์ํธ๋ฅผ ์ ๋ ฌํ๋ค.
์ ๋ ฌ๋ ๋๊ฐ์ ๋ถ๋ถ ๋ฆฌ์คํธ๋ฅผ ํฉํ์ฌ ์ ์ฒด ๋ฆฌ์คํธ๋ฅผ ์ ๋ ฌํ๋ค.
Copy void merge(int array[], int left, int mid, int right)
{
int i, j, k, m;
i = left;
j = mid + 1;
k = left; //๊ฒฐ๊ณผ ๋ฐฐ์ด์ ์ธ๋ฑ์ค
int tempArray[MAX];
//left๋ถํฐ mid ๊น์ง์ ๋ธ๋ก๊ณผ mid+1๋ถํฐ right๊น์ง์ ๋ธ๋ก์ ์๋ก ๋น๊ตํ๋ ๋ถ๋ถ
while (i <= mid && j <= right) {
if (array[i] < array[j]){ //left index ๊ฐ์ด right index ๊ฐ๋ณด๋ค ์์ผ๋ฉด left index ๊ฐ์ ๊ฒฐ๊ณผ result์ ๋ณต์ฌ
tempArray[k] = array[i];
i++;
}else{ //์๋๋ผ๋ฉด right index ๊ฐ์ ๊ฒฐ๊ณผ result์ ๋ณต์ฌ
tempArray[k] = array[j];
j++;
}
k++;
}
// left ๋ธ๋ก์ ๊ฐ์ ๋ค ์ฒ๋ฆฌ๋์๋๋ฐ right ๋ธ๋ก์ index๊ฐ ์์ง ๋จ์์์ ๊ฒฝ์ฐ
// right index๋ฅผ ์์ฐจ์ ์ผ๋ก ๊ฒฐ๊ณผ result์ ๋ณต์ฌ
if (i > mid){
for (m = j; m <= right; m++){
tempArray[k] = array[m];
k++;
}
} else { // left ๋ธ๋ก์ index๊ฐ ์์ง ๋จ์์์ ๊ฒฝ์ฐ left index๋ฅผ ์์ฐจ์ ์ผ๋ก ๊ฒฐ๊ณผ result์ ๋ณต์ฌ
for (m = i; m <= mid; m++){
tempArray[k] = array[m];
k++;
}
}
for(m = left; m <= right; m++){
array[m] = tempArray[m];
}
}
void merge_sort(int array[], int left, int right)
{
int mid;
// ๋ถํ ์ด ๋ค ๋์ง ์์์ ๊ฒฝ์ฐ if ๋ฌธ ์คํ
if(left < right){
mid = (left + right)/2;
merge_sort(array, left, mid); //์ผ์ชฝ ๋ธ๋ก ๋ถํ
merge_sort(array, mid+1, right); //์ค๋ฅธ์ชฝ ๋ธ๋ก ๋ถํ
merge(array, left, mid, right); //๋ถํ ๋ ๋ธ๋ก ๋ณํฉ
}
}
๊ธฐ์์ ๋ ฌ(Radix Sort)
๊ธฐ์ ์ ๋ ฌ์ ์ ์์ ์๋ฆฌ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฎ์ ์๋ฆฌ์๋ถํฐ ๋น๊ตํด ์ ๋ ฌํ๋ ์๊ณ ๋ฆฌ์ฆ์
๋๋ค.
์๋ฅผ ๋ค์ด 3์๋ฆฌ ์๋ผ๋ฉด 1์์๋ฆฌ, 10์์๋ฆฌ , 100์ ์๋ฆฌ ์ซ์๋ฅผ ์์๋๋ก ๋น๊ตํด์ ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
Copy void radix_sort(int a[])
{
int i, b[MAX], m=0, exp=1;
// m์ ์ต๋๊ฐ์ ์ ์ฅ
for( i=0 ; i<MAX ; i++ )
{
if( a[i] > m )
m = a[i];
}
// m์ ์๋ฆฌ์๋ณด๋ค exp๊ฐ ์ปค์ง๋ฉด ์ข
๋ฃ
while( m/exp > 0 )
{
int bucket[10] = {0}; //์๋ณ๋ก ๋น๊ตํด์ ์์๋ก ์ ์ฅํด๋ ๊ณต๊ฐ
for( i=0 ; i<MAX ; i++ )
bucket[a[i]/exp%10]++;
for( i=1 ; i<10 ; i++ )
bucket[i] += bucket[i-1];
for( i=MAX-1 ; i>=0 ; i-- )
b[--bucket[a[i]/exp%10]] = a[i];
for( i=0 ; i<MAX ; i++ )
a[i] = b[i];
exp *= 10; //์๋ฆฌ์ ๋น๊ต๊ฐ ๋๋๋ฉด ๋ค์ ์๋ฆฌ์!
}
}
Copy def counting_sort(arr, digit):
n = len(arr)
# ๋ฐฐ์ด์ ํฌ๊ธฐ์ ๋ง๋ output ๋ฐฐ์ด์ ์์ฑํ๊ณ 10๊ฐ์ 0์ ๊ฐ์ง count๋ ๋ฐฐ์ด์ ์์ฑํ๋ค.
output = [0] * n
count = [0] * 10
# ๊ฐ ์๋ฆฌ์์ ๋ง๊ฒ count๋ฅผ ์ฆ๊ฐ์์ผ์ค๋ค.
for i in range(0, n):
index = int(arr[i] / digit)
count[(index) % 10] += 1
# count ๋ฐฐ์ด์ ์์ ์๋ฅผ ์ฐจ๋ก๋๋ก ๋ํด ๊ฐ ์๋ฆฟ์๋ฅผ ์ ํด์ค๋ค.
# ex) 123,134,151,121
# before : [ 0, 2, 0, 1, 1 ]
# after : [ 0, 2, 2, 3, 4 ]
for i in range(1, 10):
count[i] += count[i - 1]
# ๊ฐ ์๋ฆฟ์ ๋ณ๋ก output ๋ฐฐ์ด์ ์ฐจ๋ก๋๋ก ์ ๋ ฌํ๋ค.
# ex) 1์ ์๋ฆฌ ์์
# [ 0, 121, 0, 0]
# [ 151, 121, 0, 0]
# [ 151, 121, 0, 134]
# [ 151, 121, 123, 134]
i = n - 1
while i >= 0:
index = int(arr[i] / digit)
output[count[(index) % 10] - 1] = arr[i]
count[(index) % 10] -= 1
i -= 1
# arr์ output์ ํ ๋นํ๋ค.
return output
# Method to do Radix Sort
def radix_sort(arr):
# arr ๋ฐฐ์ด์ค์์ ์ต๋๊ฐ์ ๊ฐ์ ธ์ ์๋ฆฟ์๋ฅผ ํ์
ํ๋ค.
# ex) ์ต๋๊ฐ์ด 9833 ์ด๋ฉด 1000๊น์ง
maximum = max(arr)
# ์๋ฆฟ์๋ง๋ค countingSorting์ ์์ํ๋ค.
digit = 1
while int(maximum / digit) > 0:
arr = counting_sort(arr, digit)
digit *= 10
return arr
๋ณต์ก๋ : O(dn) d๋ ์๋ฆฟ์
ํต์ ๋ ฌ(Quick sort)
pivot(๊ธฐ์ค๊ฐ) ์ ํ๊ธฐ
pivot๋ณด๋ค ์์ ์์๋ค์ ์ผ์ชฝ, ํฐ ์์๋ ์ค๋ฅธ์ชฝ
pivot์ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ ๋ฐฐ์ด๊ณผ ์ค๋ฅธ์ชฝ ๋ฐฐ์ด์ ์๋ก์ด ๋ฐฐ์ด๋ก ์ ํ๊ณ ๊ฐ ๋ฐฐ์ด๊ตฌ๊ฐ์์ 1๋ฒ๊ณผ์ ์ฌ๊ท์ ๋ฐ๋ณต
์ผ๋ฐ์ ์ผ๋ก ์ฒ์ ๋๋ ๋ง์ง๋ง ์์๋ฅผ pivot์ผ๋ก ์ก๋๋ค.
Copy int partition (int arr[], int low, int high)
{
int pivot = arr[high];
int i = (low - 1);
for (int j = low; j <= high- 1; j++)
{
if (arr[j] <= pivot)
{
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
return (i + 1);
}
void quickSort(int arr[], int low, int high)
{
if (low < high)
{
//pi = partition index
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
Copy #include <algorithm>
bool compare(int a, int b){
// ์ค๋ฆ์ฐจ์
// return a<b;
// ๋ด๋ฆผ์ฐจ์
return a>b;
}
bool comparep(POINT a, POINT b){
if(a.x == b.x ) return a.y < b.y;
else return a.x < b.x;
}
//์ฒ์๋ถํฐ n-1๋ฒ์งธ๊น์ง ์์๋ฅผ compareํจ์์ ์ ์๋๋ก ์ ๋ ฌ
//ํต์ ๋ ฌ ๊ธฐ๋ฐ์ผ๋ก ์ ๋ ฌํ๋ค.
//std::sort(์ ๋ ฌํ ์๋ฃ์ ์์ ์ฃผ์, ์ ๋ ฌํ ์๋ฃ์ ๋ง์ง๋ง ์ฃผ์,[๋น๊ตํจ์ ์ฃผ์])
std::sort(S,S+n,compare);
Copy def quick_sort(array):
if len(array) <= 1:
return
pivot = array[0]
temp = array[1:]
left = [i for i in temp if i < pivot]
right = [i for i in temp if i > pivot]
return quick_sort(left) + [pivot] + quick_sort(right)
์๊ฐ ๋ณต์ก๋
์ต์
์ ๊ฒฝ์ฐ : O(N^2)
N^2(์ ํ์ ๋ ฌ, ์ฝ์
์ ๋ ฌ)
๋ค๋ง ํต์ ๋ ฌ์ ํ๊ท ์ ์ผ๋ก ์๊ฐ๋ณต์ก๋๊ฐ O(NlogN)์ด์ง๋ง ์ต์
์ ๊ฒฝ์ฐ(์ด๋ฏธ ์ ๋ ฌ๋์ด ์๋ ๊ฒฝ์ฐ) O(N^2)์ธ ๊ฒ์ ์ฃผ์ํด์ผํ๋ค.
n๊ฐ์ ๋
ธ๋์ ๋ํ ์์ ์ด์งํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ค. ์ด๋ ๋ฃจํธ ๋
ธ๋๋ถํฐ ๋ถ๋
ธ๋, ์ผ์ชฝ ์๋
ธ๋, ์ค๋ฅธ์ชฝ ์๋
ธ๋ ์์ผ๋ก ๊ตฌ์ฑํ๋ค.
์ต๋ ํ ์ ๊ตฌ์ฑํ๋ค.
ํ๋ฒ์ ํ๋์ฉ ์์๋ฅผ ํ์์ ์ญ์ ํ๋ฉด์ ์ ์ฅํ๋ค.
ํ ์ ๋ ฌ์ด ์ต๋๋ก ์ ์ฉํ ๊ฒฝ์ฐ๋ ์ ์ฒด ์๋ฃ๊ฐ ์๋ ๊ฐ์ฅ ํฐ ๊ฐ ๋ช๊ฐ๋ง ํ์ํ ๋ ์ด๋ค.
๊ตฌํ
ํ๊ตฌํ์ ํ(heap) ์์ ํ์ธํ ์ ์๋ค.
Copy void heap_sort(int arr[], int n){
int i;
Heap heap;
init(&heap);
for(i=0;i<n;i++){
insert_max(&heap, arr[i]);
}
for(i=n-1;i>=0;i--){
arr[i]=delete_max(&heap);
}
}
๋ณต์ก๋
ํ ์ญ์ ์๊ฐ O(logn)n = *O(nlogn)
๊ณ์ ์ ๋ ฌ(Count Sort)
๊ณ์ ์ ๋ ฌ์ ํน์ ํ ์กฐ๊ฑด์ด ๋ถํฉํ ๋๋ง ์ฌ์ฉํ ์ ์์ง๋ง ๋งค์ฐ ๋น ๋ฅธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์ด๋ค.
๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์์ ์ ์์ธ ์ํฉ์ ๊ฐ์ ํด๋ณผ ๊ฒ์ด๋ค. ๋ฐ์ดํฐ์ ๊ฐ์๊ฐ N, ๋ฐ์ดํฐ ์ค ์ต๋๊ฐ์ด K์ผ ๋, ๊ณ์ ์ ๋ ฌ์ ์ต์
์ ๊ฒฝ์ฐ์๋ ์ํ์๊ฐ O(N+K)๋ฅผ ๋ณด์ฅํ๋ค.
๊ณ์ ์ ๋ ฌ์ ๋ฐ์ดํฐ์ ํฌ๊ธฐ ๋ฒ์๊ฐ ์ ํ๋์ด ์ ์ ํํ๋ก ํํํ ์ ์์ ๋๋ง ์ฌ์ฉํ ์ ์๋ค. ๋ง์ฝ ๋ฐ์ดํฐ์ ๊ฐ์ด ๋ฌดํํ ๋ฒ์๋ฅผ ๊ฐ์ง ์ ์๋ ์ค์ํ ๋ฐ์ดํฐ๊ฐ ์ฃผ์ด์ง๋ ๊ฒฝ์ฐ์๋ ๊ณ์ ์ ๋ ฌ์ ์ฌ์ฉํ๊ธฐ ์ด๋ ต๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฅ ํฐ ๋ฐ์ดํฐ์ ๊ฐ์ฅ ์์ ๋ฐ์ดํฐ์ ์ฐจ์ด๊ฐ 1,000,000์ ๋์ง ์์ ๋ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
๊ณ์ ์ ๋ ฌ์ ์์ ๋ชจ๋ ๋ฒ์๋ฅผ ๋ด์ ์ ์๋ ํฌ๊ธฐ์ ๋ฆฌ์คํธ๋ฅผ ์ ์ธํด์ผํ๊ธฐ ๋๋ฌธ์, ํฌ๊ธฐ์ ์ ํ์ด ์๋ค.
Copy def count_sort(array):
count = [0] * (max(array)+1)
for i in array:
count[i]+=1
for j in range(len(count)):
for x in range(count[j]):
print(j, end=' ')
์๊ฐ ๋ณต์ก๋ : O(N+K), ์ต๋๊ฐ ํฌ๊ธฐ K, ๋ฐ์ดํฐ์ N
ํ์ด์ฌ 3.7 ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ๋น๊ต
๊ธฐ๋ณธ ์ ๋ ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ ํ ์ ๋ ฌ์ ๊ธฐ๋ณธ ์ ๋ ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํด ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋น๊ตํ์ ๋ ๋งค์ฐ ๋นํจ์จ ์ ์ด์ง๋ง, ํน์ ํ ๋ฆฌ์คํธ์์ ๊ฐ์ฅ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์๋๋ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋ค.
sorted()
ํ์ด์ฌ ๊ธฐ๋ณธ ์ ๋ ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํ๋ sorted()
๋ ํต์ ๋ ฌ ๊ณผ ๋์ ๋ฐฉ์์ด ๋น์ทํ ๋ณํฉ ์ ๋ ฌ์ ๊ธฐ๋ฐ(๋ณํฉ ์ ๋ ฌ + ์ฝ์
์ ๋ ฌ)์ผ๋ก ๋ง๋ค์ด์ก๋ค. ๋ณํฉ ์ ๋ ฌ์ ํต์ ๋ ฌ๋ณด๋ค ์ผ๋ฐ์ ์ผ๋ก ๋๋ฆฌ์ง๋ง, ์ต์
์ ๊ฒฝ์ฐ์๋ O(NlogN) ์๊ฐ ๋ณต์ก๋๋ฅผ ๋ณด์ฅํ๋ค.
๋ฆฌ์คํธ, ๋์
๋๋ฆฌ ์๋ฃํ์ ๋ฐ์์ ์ ๋ ฌ๋ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
Copy arr = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8]
result = sorted(arr)
print(result) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(arr) # [7, 5, 9, 0, 3, 1, 6, 2, 4, 8]
์ ๋ ฌ์์ Key ๋งค๊ฐ๋ณ์๋ฅผ ์
๋ ฅ๋ฐ์ ์ ๋ ฌํ ์ ์๋๋ฐ, key๊ฐ์ผ๋ก๋ ์ ๋ ฌ ๊ธฐ์ค์ ํ๋์ ํจ์๊ฐ ์
๋ ฅ๋๋ค.
Copy arr = [('ํ์ด์ปค', 26), ('ํ
๋', 25), ('์ผ๋ฆฌ์', 20)]
def setting(data):
return data[1]
print(sorted(arr, key=setting)) # [('์ผ๋ฆฌ์', 20), ('ํ
๋', 25), ('ํ์ด์ปค', 26)]
sort()
๋ฆฌ์คํธ ๋ณ์๊ฐ ํ๋ ์์ ๋ ๋ด๋ถ ์์๋ฅผ ๋ฐ๋ก ์ ๋ ฌํ ์๋ ์๋ค. sort()
๋ฅผ ์ด์ฉํ๋ฉด ๋ณ๋์ ์ ๋ ฌ๋ ๋ฆฌ์คํธ๊ฐ ๋ฐํ๋์ง ์๊ณ ๋ด๋ถ ์์๊ฐ ๋ฐ๋ก ์ ๋ ฌ๋๋ค.
Copy arr.sort()
print(arr) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Copy arr = [('ํ์ด์ปค', 26), ('ํ
๋', 25), ('์ผ๋ฆฌ์', 20)]
def setting(data):
return data[1]
arr.sort(key=setting)
print(arr) # [('์ผ๋ฆฌ์', 20), ('ํ
๋', 25), ('ํ์ด์ปค', 26)]
์ ๋ ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํญ์ ์ต์
์ ๊ฒฝ์ฐ์๋ ์๊ฐ๋ณต์ก๋ O(NlogN)์ ๋ณด์ฅํ๋ค.