์ ๋ ฌ ์ด๋ ๋ฌผ๊ฑด์ ํฌ๊ธฐ ์์ผ๋ก ์ค๋ฆ์ฐจ์์ด๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋์ด ํ ๊ฒ์ด๋ค.
๋จ์ํ์ง๋ง ๋นํจ์จ์ : ์ฝ์
, ์ ํ, ๋ฒ๋ธ ์ ๋ ฌ
๋ณต์กํ์ง๋ง ํจ์จ์ : ํต, ํํ, ํฉ๋ณ, ๊ธฐ์ ์ ๋ ฌ
์ ํ์ ๋ ฌ(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)์ ๋ณด์ฅํ๋ค.