"삽입정렬 구현"의 두 판 사이의 차이

28번째 줄: 28번째 줄:
== C++ ==
== C++ ==
[[분류: C++]]
[[분류: C++]]
{{참고|C++ 삽입정렬 구현}}
<source lang="cpp">
<source lang="cpp">
#include <iterator>
#include <iostream>
 
using namespace std;
template<typename biIter>
void insertion_sort(int a[], int size) {
void insertion_sort(biIter begin, biIter end)
int i, j, temp;
{
for(i=1; i<size; i++) {
    biIter bond = begin;
temp = a[i];
    for (++bond; bond!=end; ++bond)
for(j=i-1; j>=0; j--) {
    {
    if(a[j]<temp) break;
      typename std::iterator_traits<biIter>::value_type key = *bond;
    a[j+1] = a[j];
      biIter ins = bond;
}
      biIter pre = ins;
a[j+1] = temp;
      for (--pre; ins != begin && *pre > key; *ins-- = *pre--);
}
      *ins = key;
}
    }
int main() {
int arr[] = {9,1,22,4,0,-1,1,22,100,10};
int size = sizeof(arr)/sizeof(int);
insertion_sort(arr, size);
for(int i=0; i<size; i++) cout << arr[i] << " ";
// -1 0 1 1 4 9 10 22 22 100
}
}
</source>
</source>

2018년 8월 26일 (일) 13:17 판

1 C

#include <stdio.h>
#define ARRAYSIZE(A) sizeof(A) / sizeof((A)[0])
void insertion_sort(int a[], int size) {
	int i, j, temp;
	for(i=1; i<size; i++) {
		temp = a[i];
		for(j=i-1; j>=0; j--) {
		    if(a[j]<temp) break;
		    a[j+1] = a[j];
		}
		a[j+1] = temp;
	}
}
int main() {
	int arr[] = {9,1,22,4,0,-1,1,22,100,10};
	int size = ARRAYSIZE(arr);
	insertion_sort(arr, size);
	for(int i=0; i<size; i++) printf("%d ", arr[i]);
	// -1 0 1 1 4 9 10 22 22 100 
}

2 C++

#include <iostream>
using namespace std;
void insertion_sort(int a[], int size) {
	int i, j, temp;
	for(i=1; i<size; i++) {
		temp = a[i];
		for(j=i-1; j>=0; j--) {
		    if(a[j]<temp) break;
		    a[j+1] = a[j];
		}
		a[j+1] = temp;
	}
}
int main() {
	int arr[] = {9,1,22,4,0,-1,1,22,100,10};
	int size = sizeof(arr)/sizeof(int);
	insertion_sort(arr, size);
	for(int i=0; i<size; i++) cout << arr[i] << " ";
	// -1 0 1 1 4 9 10 22 22 100 
}

3 Java

import java.util.Arrays;
public class Main {
    private static void insertion_sort(int arr[]) {
        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[]) {        
        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]
    }
}

4 OCaml

let rec isort = function
	| [] -> []
	| h::t -> insert h (isort t)
and insert a = function
	| [] -> [a]
	| h::t when a<h -> [a] @ (h::t)
	| h::t -> [h] @ (insert a t);;

5 Python

def insertion_sort(arr):
	for i in range(1, len(arr)):
		j = i-1
		key = arr[i]
		while arr[j]>key and j>=0:
			arr[j+1] = arr[j]
			j -= 1
		arr[j+1] = key
arr = [3,4,2,1,7,5,8,9,0,6,100,10]
insertion_sort(arr)
print( " ".join(map(str,arr)) )
# 0 1 2 3 4 5 6 7 8 9 10 100

6 같이 보기

7 참고

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}