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

(사용자 2명의 중간 판 33개는 보이지 않습니다)
1번째 줄: 1번째 줄:
[[분류: 정렬]]
[[분류: 삽입정렬]]
== C ==
== C ==
[[분류: C]]
[[분류: C]]
<source lang="c">
{{참고|C 삽입정렬 구현}}
void insertion_sort ( int *data, int n )
<source lang='c'>
{
#include <stdio.h>
  int i, j, remember;
void insertion_sort(int a[], int size) {
  for ( i = 1; i < n; i++ )
int i, j, temp;
  {
for(i=1; i<size; i++) {
    remember = data[(j=i)];
temp = a[i];
    while ( --j >= 0 && remember < data[j] ){
for(j=i-1; j>=0; j--) {
        data[j+1] = data[j];
    if(a[j]<temp) break;
        data[j] = remember;
    a[j+1] = a[j];
    }
}
  }
a[j+1] = temp;
}
}
}
</source>
int main() {
<source lang="c">
int arr[] = {9,1,22,4,0,-1,1,22,100,10};
void insertion_sort ( int *data, int n )
int size = sizeof(arr)/sizeof(int);
{
insertion_sort(arr, size);
  int i, j, remember;
for(int i=0; i<size; i++) printf("%d ", arr[i]);
  i = n-1;
// -1 0 1 1 4 9 10 22 22 100
  while ( i-- > 0 )
  {
    remember = data[(j=i)];
    while ( ++j < n && remember > data[j] );
 
    if ( --j == i ) continue;
    memcpy ( data+i, data+i+1, sizeof(*data) * (j-i) );
    data[j] = remember;
  }
}
}
</source>
</source>
35번째 줄: 27번째 줄:
== C++ ==
== C++ ==
[[분류: C++]]
[[분류: C++]]
{{참고|C++ 삽입정렬 구현}}
<source lang="cpp">
<source lang="cpp">
#include <iterator>
#include <iostream>
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};
insertion_sort(arr, sizeof(arr)/sizeof(int));
for(int x: arr) std::cout << x << " ";
// -1 0 1 1 4 9 10 22 22 100
}
</source>


template<typename biIter>
==C#==
void insertion_sort(biIter begin, biIter end)
[[분류: Csharp]]
{
{{참고|C샵 삽입정렬 구현}}
    biIter bond = begin;
<source lang='csharp'>
    for (++bond; bond!=end; ++bond)
using System;
    {
class Program {
      typename std::iterator_traits<biIter>::value_type key = *bond;
    static void insertionSort(int[] a) {
      biIter ins = bond;
    int i, j, temp, size=a.Length;
      biIter pre = ins;
    for(i=1; i<size; i++) {
      for (--pre; ins != begin && *pre > key; *ins-- = *pre--);
    temp = a[i];
      *ins = key;
    for(j=i-1; j>=0; j--) {
        if(a[j]<temp) break;
        a[j+1] = a[j];
    }
    a[j+1] = temp;
    }
    }
    static void Main() {
        int[] arr = {9,1,22,4,0,-1,1,22,100,10};
        insertionSort(arr);
        Console.Write(string.Join(",",arr));
        // -1,0,1,1,4,9,10,22,22,100
     }
     }
}
}
55번째 줄: 77번째 줄:
== Java ==
== Java ==
[[분류: Java]]
[[분류: Java]]
{{참고|Java 삽입정렬 구현}}
<source lang="java">
<source lang="java">
void insertionSort(int[] arr) {
public class MyClass {
  for(int index = 1 ; index < arr.length ; index++){
    static void insertion_sort(int a[]) {
      int temp = arr[index];
        int i, j, temp, size = a.length;
      int aux = index - 1;
        for(i=1; i<size; i++) {
      while( (aux >= 0) && ( arr[aux] > temp ) ) {
            temp = a[i];
        arr[aux+1] = arr[aux];
            for(j=i-1; j>=0; j--) {
        aux--;
                if(a[j]<temp) break;
      }
                a[j+1] = a[j];
      arr[aux + 1] = temp;
            }
  }
            a[j+1] = temp;
        }
    }
    public static void main(String args[]) {
    int[] arr = {9,1,22,4,0,-1,1,22,100,10};
    insertion_sort(arr);
    for(int x: arr) System.out.format( "%d ", x );
    // -1 0 1 1 4 9 10 22 22 100
    }
}
}
</source>
</source>
79번째 줄: 110번째 줄:
| 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>
==Perl==
[[분류:Perl]]
{{참고|Perl 삽입정렬 구현}}
<source lang='perl'>
sub insertion_sort {
    my $a=shift;
    $size=@$a;
    for $i (1..$size-1) {
        $j=$i-1;
        $temp=@$a[$i];
        while ($j>=0 && @$a[$j]>$temp) {
            @$a[$j+1]=@$a[$j];
            $j-=1;
        }
        @$a[$j+1]=$temp;
    }
}
@arr = (9,1,22,4,0,-1,1,22,100,10);
insertion_sort(\@arr);
print join(',',@arr);
# -1,0,1,1,4,9,10,22,22,100
</source>
==PHP==
[[분류: PHP]]
{{참고|PHP 삽입정렬 구현}}
<source lang='php'>
<?php
function insertion_sort(&$a) {
    $size = count($a);
    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;
    }
}
$arr = [9,1,22,4,0,-1,1,22,100,10];
insertion_sort( $arr );
echo implode(',',$arr);
# -1,0,1,1,4,9,10,22,22,100
</source>
</source>


== Python ==
== Python ==
[[분류: Python]]
[[분류: Python]]
{{참고|Python 삽입정렬 구현}}
<source lang="python">
<source lang="python">
def insert_sort(x):
def insertion_sort(a):
for i in range(1, len(x)):
for i in range(1, len(a)):
j = i - 1
j=i-1
key = x[i]
temp=a[i]
while x[j] > key and j >= 0:
while j>=0 and a[j]>temp:
x[j+1] = x[j]
a[j+1]=a[j]
j = j - 1
j-=1
x[j+1] = key
a[j+1]=temp
return x
arr = [9,1,22,4,0,-1,1,22,100,10]
insertion_sort(arr)
print( arr )
# [-1, 0, 1, 1, 4, 9, 10, 22, 22, 100]
</source>
</source>
==Ruby==
[[분류: Ruby]]
{{참고|Ruby 삽입정렬 구현}}
<source lang='ruby'>
def insertion_sort(a)
    for i in (1...a.size)
        j=i-1
        temp=a[i]
        while j>=0 and a[j]>temp
            a[j+1]=a[j]
            j-=1
        end
        a[j+1]=temp
    end
end
arr = [9,1,22,4,0,-1,1,22,100,10]
insertion_sort(arr)
print arr
# [-1, 0, 1, 1, 4, 9, 10, 22, 22, 100]
</source>
==같이 보기==
* [[삽입정렬]]
* [[정렬 구현]]
* [[거품정렬 구현]]
==참고==
* https://www.geeksforgeeks.org/insertion-sort/

2018년 8월 28일 (화) 20:39 판

1 C

#include <stdio.h>
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++) printf("%d ", arr[i]);
	// -1 0 1 1 4 9 10 22 22 100 
}

2 C++

#include <iostream>
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};
	insertion_sort(arr, sizeof(arr)/sizeof(int));
	for(int x: arr) std::cout << x << " ";
	// -1 0 1 1 4 9 10 22 22 100 
}

3 C#

using System;
class Program {
    static void insertionSort(int[] a) {
    	int i, j, temp, size=a.Length;
    	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;
    	}
    }
    static void Main() {
        int[] arr = {9,1,22,4,0,-1,1,22,100,10};
        insertionSort(arr);
        Console.Write(string.Join(",",arr));
        // -1,0,1,1,4,9,10,22,22,100
    }
}

4 Java

public class MyClass {
    static void insertion_sort(int a[]) {
        int i, j, temp, size = a.length;
        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;
        }
    }
    public static void main(String args[]) {
    	int[] arr = {9,1,22,4,0,-1,1,22,100,10};
    	insertion_sort(arr);
    	for(int x: arr) System.out.format( "%d ", x );
    	// -1 0 1 1 4 9 10 22 22 100 
    }
}

5 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);;

6 Perl

sub insertion_sort {
    my $a=shift;
    $size=@$a;
    for $i (1..$size-1) {
        $j=$i-1;
        $temp=@$a[$i];
        while ($j>=0 && @$a[$j]>$temp) {
            @$a[$j+1]=@$a[$j];
            $j-=1;
        }
        @$a[$j+1]=$temp;
    }
}
@arr = (9,1,22,4,0,-1,1,22,100,10);
insertion_sort(\@arr);
print join(',',@arr);
# -1,0,1,1,4,9,10,22,22,100

7 PHP

<?php
function insertion_sort(&$a) {
    $size = count($a);
    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;
    }
}
$arr = [9,1,22,4,0,-1,1,22,100,10];
insertion_sort( $arr );
echo implode(',',$arr);
# -1,0,1,1,4,9,10,22,22,100

8 Python

def insertion_sort(a):
	for i in range(1, len(a)):
		j=i-1
		temp=a[i]
		while j>=0 and a[j]>temp:
			a[j+1]=a[j]
			j-=1
		a[j+1]=temp
arr = [9,1,22,4,0,-1,1,22,100,10]
insertion_sort(arr)
print( arr )
# [-1, 0, 1, 1, 4, 9, 10, 22, 22, 100]

9 Ruby

def insertion_sort(a)
    for i in (1...a.size)
        j=i-1
        temp=a[i]
        while j>=0 and a[j]>temp
            a[j+1]=a[j]
            j-=1
        end
        a[j+1]=temp
    end
end
arr = [9,1,22,4,0,-1,1,22,100,10]
insertion_sort(arr)
print arr
# [-1, 0, 1, 1, 4, 9, 10, 22, 22, 100]

10 같이 보기

11 참고

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