편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
[[분류: | [[분류: 정렬]] | ||
== C == | == C == | ||
[[분류: C]] | [[분류: C]] | ||
{{참고|C 삽입정렬 구현}} | {{참고|C 삽입정렬 구현}} | ||
< | <source lang='c'> | ||
#include <stdio.h> | #include <stdio.h> | ||
#define ARRAYSIZE(A) sizeof(A) / sizeof((A)[0]) | |||
void insertion_sort(int a[], int size) { | void insertion_sort(int a[], int size) { | ||
int i, j, temp; | int i, j, temp; | ||
18번째 줄: | 19번째 줄: | ||
int main() { | int main() { | ||
int arr[] = {9,1,22,4,0,-1,1,22,100,10}; | int arr[] = {9,1,22,4,0,-1,1,22,100,10}; | ||
int size = | int size = ARRAYSIZE(arr); | ||
insertion_sort(arr, size); | insertion_sort(arr, size); | ||
for(int i=0; i<size; i++) printf("%d ", arr[i]); | for(int i=0; i<size; i++) printf("%d ", arr[i]); | ||
// -1 0 1 1 4 9 10 22 22 100 | // -1 0 1 1 4 9 10 22 22 100 | ||
} | } | ||
</ | </source> | ||
== C++ == | == C++ == | ||
[[분류: C++]] | [[분류: C++]] | ||
<source lang="cpp"> | |||
< | #include <iterator> | ||
#include < | |||
template<typename biIter> | |||
void insertion_sort(biIter begin, biIter end) | |||
{ | |||
< | biIter bond = begin; | ||
for (++bond; bond!=end; ++bond) | |||
{ | |||
typename std::iterator_traits<biIter>::value_type key = *bond; | |||
biIter ins = bond; | |||
biIter pre = ins; | |||
for (--pre; ins != begin && *pre > key; *ins-- = *pre--); | |||
*ins = key; | |||
} | } | ||
} | } | ||
</ | </source> | ||
== Java == | == Java == | ||
[[분류: Java]] | [[분류: Java]] | ||
{{참고|Java 삽입정렬 구현}} | {{참고|Java 삽입정렬 구현}} | ||
< | <source lang="java"> | ||
public class | import java.util.Arrays; | ||
static void insertion_sort(int | public class Main { | ||
int i, j, | private static void insertion_sort(int arr[]) { | ||
for(i=1; i<size; | int i, j, key, size = arr.length; | ||
for(i=1; i<size; ++i) { | |||
key = arr[i]; | |||
j = i-1; | |||
while( j>=0 && arr[j]>key ) { | |||
arr[j+1] = arr[j]; | |||
j--; | |||
} | } | ||
arr[j+1] = key; | |||
} | } | ||
} | } | ||
public static void main(String args[]) { | public static void main(String args[]) { | ||
int arr[] = {3,4,2,1,7,5,8,9,0,6,100,10}; | |||
insertion_sort(arr); | |||
System.out.println( Arrays.toString(arr) ); | |||
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100] | |||
} | } | ||
} | } | ||
</ | </source> | ||
== OCaml == | == OCaml == | ||
[[분류: OCaml]] | [[분류: OCaml]] | ||
< | <source lang="ocaml"> | ||
let rec isort = function | let rec isort = function | ||
| [] -> [] | | [] -> [] | ||
110번째 줄: | 83번째 줄: | ||
| h::t when a<h -> [a] @ (h::t) | | h::t when a<h -> [a] @ (h::t) | ||
| h::t -> [h] @ (insert a t);; | | h::t -> [h] @ (insert a t);; | ||
</ | </source> | ||
== Python == | == Python == | ||
[[분류: Python]] | [[분류: Python]] | ||
{{참고|Python 삽입정렬 구현}} | {{참고|Python 삽입정렬 구현}} | ||
< | <source lang="python"> | ||
def insertion_sort( | def insertion_sort(arr): | ||
for i in range(1, len( | for i in range(1, len(arr)): | ||
j=i-1 | j = i-1 | ||
key = arr[i] | |||
while j> | while arr[j]>key and j>=0: | ||
arr[j+1] = arr[j] | |||
j-=1 | j -= 1 | ||
arr[j+1] = key | |||
arr = [ | arr = [3,4,2,1,7,5,8,9,0,6,100,10] | ||
insertion_sort(arr) | insertion_sort(arr) | ||
print arr | print( " ".join(map(str,arr)) ) | ||
# | # 0 1 2 3 4 5 6 7 8 9 10 100 | ||
</ | </source> | ||
==같이 보기== | ==같이 보기== | ||
* [[거품정렬 구현]] | |||
* [[정렬 구현]] | |||
* [[삽입정렬]] | * [[삽입정렬]] | ||
==참고== | ==참고== | ||
* https://www.geeksforgeeks.org/insertion-sort/ | * https://www.geeksforgeeks.org/insertion-sort/ | ||