R의 시작


1. R는 뭘까?

- 통계계산(거창하게 빅데이터)를 분석하고 이를 시각화하기 위한 언어이자 환경

- R언어를 통해 이러한 기능들을 동작시킬 수 있다.


2. R언어의 개념

- 상수, 변수: 변수타입 또한 설정하지 않은 그대로 선언, 물론 예약어들은 제외대상

- 연산기호: C, Java의 연산기호 채계와 거의 유사하다고 판단됨

- 대입기호: 일반적으로 많이 사용하는 "=" 대신 "<-" 를 사용

  ex) x <- 1

- for문: Python의 for와 유사

  ex) for i in 1:x { ...}

- 배열: 쉽게 쓸수 있도록 선언과 사용이 가벼움

   ex) x <- c(1, 2, 3, 4)


3. R 환경

- https://www.r-project.org/about.html 에서 R 프로그램을 다운받아 설치하면 된다.



Reference: 

- Book - "R로 배우는 데이터 분석 기본기 데이터 시각화" / "한빛미디어"

- Book - "A Byte of Python"

- https://ko.wikipedia.org/wiki/R_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)

언어별 표기법들


1. 카멜 표기법 = camelCase

Java에서 흔히들 보는 변수명 스타일이다.

시작은 소문자, 그 뒤 단어의 시작은 대문자로 구분


2. 파스칼 표기법 = PascalCase

Java에서 흔히들 보는 Class명 스타일이다.

각 단어의 시작은 대문자로 구분


3. 스네이크 표기법 = snake_case

C언어 계열에서 흔히들 보는 변수명이다.

각 단어를 under bar로 구분


4. 헝가리안 표기법 = strName

Map에 넣을 Key값을 선언할때 이런식으로 쓰는경우를 보곤 했다.

접두어에 변수 Type에 대한 이름을 축약하여 붙이는 것

접두어가 궁금하다면 : https://namu.wiki/w/%ED%97%9D%EA%B0%80%EB%A6%AC%EC%95%88%20%ED%91%9C%EA%B8%B0%EB%B2%95



Refered from : 

http://zetawiki.com/wiki/%EC%B9%B4%EB%A9%9C%ED%91%9C%EA%B8%B0%EB%B2%95_camelCase,_%ED%8C%8C%EC%8A%A4%EC%B9%BC%ED%91%9C%EA%B8%B0%EB%B2%95_PascalCase

http://zetawiki.com/wiki/%EC%8A%A4%EB%84%A4%EC%9D%B4%ED%81%AC_%ED%91%9C%EA%B8%B0%EB%B2%95

https://namu.wiki/w/%ED%97%9D%EA%B0%80%EB%A6%AC%EC%95%88%20%ED%91%9C%EA%B8%B0%EB%B2%95

혼자 아주 단순히 개발할 것이라면 이 정도만 알면 되지만

안타깝게도 git의 목적은 여러사람과 같이 쓰기에 발생하는 예외케이스들이 꽤 많다.

흔히 겪었던 "나는 왜 안되지?"case를 정리해둔다.

여기 정리된 case가 아니라도 git은 에러상황에 대한 어떠한 실마리를 제공해주니 에러내용을 잘 읽고 따라해보자.



case1: git clone 왜 안되지??

이것은 조금 광범위한 문제일 수 있겠지만 필자가 경험한 범위에서는

- git의 주소가 틀렸거나

- git에 대한 권한이 없거나

이다.

전자의 경우 주소를 잘 긁어오는 수 밖에 없다.

후자의 경우 또다시 여러가지로 나뒤어지는 경우가 있는데

1) git의 관리자가 권한을 줘야 하는 경우

2) ssh 연결을 해야 하는 경우

3) Mac OS에서 하나의 git사이트에 두개의 유저를 사용하고 있는 경우

이다.

1)의 경우는 뭐... 관리자에게 요청해야 하고

2)의 경우는 ssh-key를 등록하거나 http, https 로 가능하다면 바꿔서 접속하면 된다.

3)의 경우는 Mac OS에 키체인이라는 게 있는데 거기서 username/password를 저장하고 있다. 이것을 날려주면 된다.

하지만 이것은 git credential 기능 + osxkeychain 기능이 합쳐져서 발생하는것으로 한번 또 설정하고 나면 또다시 키체인에 생겨 번거롭다.

이를 방지하려면 git 주소에 username을 넣어주면 된다.

 ex) git clone httos://[username]@git.gitlab.com/[Repository].git


참고1: git credential에 대한 설명 - https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-Credential-%EC%A0%80%EC%9E%A5%EC%86%8C


참고2: osxkeychain옵션에 대한 설명 - https://help.github.com/articles/caching-your-github-password-in-git/



case2: git clone 했는데 최신소스가 아니네??

서버에 문제가 있는게 아니라면

- 다른 git을 받았거나

- 다른 브랜치를 받았거나

이다.

git clone 명령 뒤에 [-b [Branch 명]] 옵션을 확인하자.

혹시 Android studio나 SourceTree 등 툴을 이용해 받았다면 기본브랜치 master 부터 가져오기 때문에 그럴 수 있다.

툴 기능에서 다른브랜치를 checkout 하자.



case3: 본인이 뭘 반영하고 있는지 모르겠다면??

필자가 생각하기에 이건 트러블슈팅이라기 보단 사용법이 서툰것인데

대부분 간단하다고 하면서 이 부분을 생략하는 것 같아서 작성한다.

1) git add 전

- git diff

  라인별로 들어가고 삭제된게 보임

- git status

  현재 수정된 파일들 보기: 빨간색들

2) git add 후

- git status

  현재 반영된 파일들 보기: 녹색들

3) git commit 후

- git commit --amend

  현재 반영된 파일들 보는게 가능하나 이건 git commit을 수정하는 명령어이고 그 내용도 수정될 수 있어서 정확한 정답은 아니다.

4) git push 후

-  대부분의 git 사이트에서 commit 내용을 보여준다. 혹은 source tree 같은 툴을 사용하자.



case4: git push하는데 안올라가!!

1) 서버(origin) 연결이 잘못 설정되어 있거나

2) 당신의 commit이 최신과 다른 경우이다.

3) 이것도 아니라면 git 의 에러로그를 잘 확인해보라. 무엇인가 끊임없이 가이드를 주려한다.


1)은 수동으로 서버 정보를 입력하면 된다.

ex) git push origin [Your branch]

2)는 git pull을 하고 'merge commit'을 만든 다음에 올리면 된다.

git pull 이후 즉시 merge commit은 자동으로 생성되며 comment도 자동이다. commit을 저장하고 git push 단계로 넘어가면 된다.



case5: git push안되서 git pull을 했는데 merge commit이 생성되지 않네?!

이건 merge commit 을 만들다가 conflict가 발생한 경우다.

수정을 하거나 commit을 만드는 순간에도 동료들은 반영하고 있다.

git은 이러한 commit들을 일렬로 정리하려 하는데

전후관계를 모를때 conflict를 발생시키고 user에게 해결해 달라고 한다.

자동으로 못하니까 사람이 해줘야 한다.





'Git' 카테고리의 다른 글

git repository 끼리 merge 하기  (0) 2017.02.16
Git 개념과 사용법  (0) 2017.02.08
gitlab 서버 구성하기  (0) 2017.02.08

git repository 끼리 merge 하기



지난번 내부 gitlab 서버를 구성했었는데 (http://dukwon.tistory.com/3)

키보드와 마우스가 안되는 현상을 없애보고자 이것저것 하다보니

서버가 이상해지고 자꾸 다운 되었다.

서버를 재설치 하고자

부랴부랴 예전 git에 현재의 반영사항을 모두 옮기는 작업을 했던 과정을 글로 남긴다.




Case 설명

여기에 A, B git이 있다.

시작은 A git에서 시작했으나 B git으로 나왔고 많은 commit들이 B에 반영되었다.

심지어 이러한 상황에 A에 commit을 올린사람도 있다.(ㅠㅠ)



이 상황에서 B의 반영사항을 모두 A로 반영하려고 한다.

(둘다 branch는 동일하다고 가정)

이때 생각해야할 절차는


1. 둘다 local에 clone하기

2. A 에서 B를 remote로 등록

3. A에서 B 몽땅 땡겨오기

이다.



1. 둘다 local에 clone하기

이 방법은 이미 알고있으리라 생각하고 생략



2. A에서 B를 remote로 등록

git A에서 git B를 가져올 수 있도록 remote를 걸어두는 것이다.

(하지만 전혀 History를 공유하지 않는다면 3번 과정에서 연관된것이 없다는 에러가 발생할 것이니 유의하자)

$ git remote add [B의 이름] [B의 경로/git clone 주소]

ex1) $ git remote add local ../B

ex2) $ git remote add local https://github.com/nasa/mct.git



3. A에서 B 몽땅 땡겨오기

git이란게 원래 개별 repository 이기 때문에 remote에 있는것과 맞추는 작업이 필요하며

'git fetch' 가 이 역할을 하고

'git merge' 는 실제로 브랜치끼리의 반영사항을 합치는 역할을 한다.(브랜치끼리 통합하려면 이것만 하면 된다.)

$ git fetch [B의 이름]

ex) $ git fetch local


$ git merge [현재 A의 branch와 같은 B의 branch 이름]

ex) $ git merge remotes/local/master


이 과정으로 온전하게 가져올 수 있겠지만

3번 과정에서 confilct가 발생할 가능성이 높고 이를 적절히 처리해야 만 한다.

이것은 git confilict 해결방법을 참고하자.


끝.



Refered from:

http://blog.caplin.com/2013/09/18/merging-two-git-repositories/

https://git-scm.com/book/ko/v1/Git-%EB%B8%8C%EB%9E%9C%EC%B9%98-%EB%B8%8C%EB%9E%9C%EC%B9%98%EC%99%80-Merge%EC%9D%98-%EA%B8%B0%EC%B4%88

'Git' 카테고리의 다른 글

git 트러블 슈팅(trouble shooting)  (0) 2017.02.22
Git 개념과 사용법  (0) 2017.02.08
gitlab 서버 구성하기  (0) 2017.02.08

Android에 OpenCV 올리기 - 시작



OpenCV(Computer Vision)라는 오픈소스 기반 라이브러리가 있다.

글자그대로 Computer Vision 관련된 라이브러리이다.

영상에 대한 분석, 인식관련된 일을 Android에서 하자는 생각에서 시작해본다.


시작과 동시에 해야할 일

1. OpenCV 사이트에서 Android용 SDK 다운로드: http://opencv.org/

- 현재 Window, Linux/Mac, Android 그리고 iOS용이 별도로 있다.



2. 다운받은 OpenCV SDK를 압축파일을 열어 구성을 확인한다.

파일이 생각보다 많아서 막막하다.



3. README.android를 읽어본다.

 파일 안에는 링크 http://opencv.org/platforms/android.html 만 있고

 해당 페이지의 내용을 요약하면 다음과 같다.


Android는 데스크탑과 다르지만 C++을 재사용할 수 있고.... Bla bla~

...

OpenCv4Android는 Java API를 제공하고 세가지 가이드가 있다.

1. 초기 셋업 참고: http://docs.opencv.org/2.4/doc/tutorials/introduction/android_binary_package/android_dev_intro.html


2. 샘플들: http://docs.opencv.org/2.4/doc/tutorials/introduction/android_binary_package/O4A_SDK.html


3. JNI로 C++를 사용: http://docs.opencv.org/2.4/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html


온라인 자료들... Bla bla~




그럼 우선 앱 개발을 위한 초기셋업부터 시작해보자.

Git 개념과 사용법


잡담 1

Git을 처음쓰면 UI로 처리하는 툴도 많은데 왜 깜깜한 Shell에서 이런'짓'을 해야하지? 이게 트랜드라고? 라는 생각이 많이 들었었다.

그런데 한국어로 '깃' 일까 '짓' 일까?

Ref: http://www.clien.net/cs2/bbs/board.php?bo_table=park&wr_id=43154274

=> '깃' 이라고 부르는게 좋겠다.


Git이야 몇년동안 많이 써봤지만 다른 Repository를 쓴 적이 별로 없어서 마땅히 비교할만한 건 없지만


필자가 생각하는 장점

- Line 별로 Difference를 비교하기 때문에 같은파일을 여러사람이 같이 작업하기 편하다.

- 각자의 Repository를 만들기 때문에 Server가 날아가도 Client에 저장된 상태까지로는 History까지 원복가능

- 리눅스 명령어를 익히게 되고 친해진다.(당장 퇴근해야 되거나, 배우고 싶지 않은 사람에겐 단점이다.)

... 생각나면 더 쓰겠다.


필자가 생각하는 단점

- 명령어로 하는게 가장 확실해서 결국 명령어를 어렵게 익히게 한다.

- 반영하는 단계가 로컬 2단계, 서버로 1단계 분할되어 있어서 번거로울 수 있다.(반대로 안전할 수는 있다.)

- git add, git commit 등의 절차를 왜 해야 하는지 설명하기 어렵다.

- conflict를 해결하는 방법이 어렵다.



# Git 사용법

git의 첫 사용자로서 단순히 소스를 다운받아 몇가지 수정을 하고 반영하는 case에 대해서 알아보자


1. 서버로부터 소스를 가져온다.

2. 수정을 한다.

3. 서버에 반영한다.


이 동작을 위해 당신이 알아야할 git 사용법에 대해서 알아보자.


1. 서버로부터 소스를 가져온다.

$ git clone [서버에 있는 git 저장소 주소] [-b [브랜치명]]

ex) $ git clone https://github.com/tensorflow/tensorflow.git -b R0.8


1) 서버로부터 git을 가져오는 키워드 'git clone' 으로 시작

2) 서버에 있는 git 저장소 주소를 입력

3) 혹시 branch가 master(default)가 아니라면 branch명을 입력

소스를 한번 가져왔다면 ''



2. 수정을 한다.

이건 뭐 다들 알아서 고치시리라...


3. 서버에 반영한다.

$ git add [반영할 파일]

ex) $ git add . 

      => 수정된 모든 파일을 반영(반영되지 않는 경우도 있었는데 까먹음)


$ git commit [-m [반영할 제목]]

ex) $ git commit -m "test commit"

      => 그냥 'git commit'만 입력해도 vi editor 화면으로 넘어가면 좀더 상세하게 제목과 내용을 작성할 수 있다.


$ git push [origin [올릴 branch 명]]

ex) $ git push

   => 서버에 보내는 방법이다.

   => origin 은 서버를 뜻한다.

   => git clone할때 특정브랜치로 가져왔고 브랜치를 변경하지 않았다면 예제와 같이 생략 가능하다.




혼자 아주 단순히 개발할 것이라면 이 정도만 알면 되지만

안타깝게도 git의 목적은 여러사람과 같이 쓰기에 발생하는 예외케이스들이 꽤 많다.

흔히 겪었던 "나는 왜 안되지?"case를 정리해둔다.

여기 정리된 case가 아니라도 git은 에러상황에 대한 어떠한 실마리를 제공해주니 에러내용을 잘 읽고 따라해보자.


여기서 설명 >>> http://dukwon.tistory.com/10

'Git' 카테고리의 다른 글

git 트러블 슈팅(trouble shooting)  (0) 2017.02.22
git repository 끼리 merge 하기  (0) 2017.02.16
gitlab 서버 구성하기  (0) 2017.02.08

Merge sort(병합 정렬)



원칙1: 2개가 될때까지 쪼갠다.

원칙2: 2개가 되면 서로 비교해서 자리를 바꾸거나 바꾸지 않는다.

원칙3: 이렇게 조각난 2개를 4개로, 4개를 8개로... 순서를 맞추어 병합한다.


Best case: O(n

Average case: O()

Worst case: O() : 



# 재귀함수로 구현한 Merge sort

public class MergeSort implements ISort {


    @Override

    public void sort(Comparable[] array) {

        mergeSort(array, 0, array.length - 1);

    }


    private void mergeSort(Comparable[] array, int startIndex, int endIndex) {

        if (endIndex - startIndex < 1) {

            return;

        }


        int middleIndex = (endIndex + startIndex) / 2;

        mergeSort(array, startIndex, middleIndex);

        mergeSort(array, middleIndex + 1, endIndex);


        merge(array, startIndex, middleIndex, endIndex);

    }


    private void merge(Comparable[] array, int startIndex, int middleIndex, int endIndex) {

        Comparable[] mergedArray = new Comparable[endIndex - startIndex + 1];

        int indexA = startIndex;

        int indexB = middleIndex + 1;


        for (int i = 0; i < mergedArray.length; i++) {

            if (indexB > endIndex || (indexA <= middleIndex && array[indexA].compareTo(array[indexB]) < 0)) {

                mergedArray[i] = array[indexA++];

            } else {

                mergedArray[i] = array[indexB++];

            }

        }


        for (int i = 0, j = startIndex; i < mergedArray.length; i++, j++) {

            array[j] = mergedArray[i];

        }

    }

}


Reference:

https://en.wikipedia.org/wiki/Merge_sort


'Algorithms > Sorting' 카테고리의 다른 글

Quick sort(퀵 정렬)  (0) 2017.06.24
Selection sort(선택 정렬)  (0) 2017.02.08
Insertion sort(삽입 정렬)  (0) 2017.02.06
Bubble sort(거품? 정렬)  (0) 2017.02.06

Selection sort(선택 정렬)




- 1원칙: i 위치에 채워질 최저/최대값을뒤에서 찾는다.

- 2원칙i보다 가장 작은수를 찾는다.

- 3원칙: 있다면 i 자리를 바꾼다.



Best case: O()  == Worst case: O() : 어차피 다 확인해야 한다. 


public class SelectionSort {


    public void sort(Comparable[] array) {

        for (int i = 0; i < array.length; i ++) {

            int lowestIndex = i;

            for (int j = i + 1; j < array.length; j++) {

                if (array[lowestIndex].compareTo(array[j]) > 0) {

                    lowestIndex = j;

                }

            }


            // swap

            if (i != lowestIndex) {

                Comparable temp = array[i];

                array[i] = array[lowestIndex];

                array[lowestIndex] = temp;

            }

        }

    }

}


Referenced from: https://en.wikipedia.org/wiki/Selection_sort

'Algorithms > Sorting' 카테고리의 다른 글

Quick sort(퀵 정렬)  (0) 2017.06.24
Merge sort(병합 정렬)  (0) 2017.02.08
Insertion sort(삽입 정렬)  (0) 2017.02.06
Bubble sort(거품? 정렬)  (0) 2017.02.06

데스크탑으로 gitlab 서버 구성하기


아마도 이 글을 읽는 사람은 이미 gitlab을 설치하기로 마음먹은 사람들이라 생각하고 쓴다.

가격정책은 https://about.gitlab.com/products/ 에서 확인가능하며

필자는 무료로 쓴다는 가정하에 구성했다.


서버를 구성하려면 다음과 같은 구성요소가 확보 되어야만 한다.

요리를 하다가 '냉장고에 쓰다 남은 안심스테이크' 같은 멘트가 싫어서 미리 적어둬본다. (안심스테이크는 결코 남을 수 없다.)


1. 서버에 할당된 고정IP

2. 64bit OS 설치가능한 안쓰는 PC

3. Ubuntu OS ISO 파일

4. 4GB이상 ubuntu OS를 구울 USB

5. GitLab 설치


나열해보니 간단한거 같다.

실제로 동작까지 걸린건 좀 더 많은 일들이 있었다.




1. 서버에 할당된 고정IP

필자는 gitlab을 회사내부에서만 활용하려고 했다. 그리고 고정IP를 써야만 하는 환경이였다.

유동 IP라도 서버를 끌게 아니라면 왠만하면 괜찮지 않을까? 라고 생각한다.



2. 64bit OS 설치가능한 안쓰는 PC

64bit OS가 잘 돌아가려면 4GB RAM정도는 있어야 한다.

32bit OS의 메모리 주소값 한계가 3GB RAM 까지만이라고 알고있기도 하다.

그리고 쓰는 PC도 안되는건 아니지만 서버를 멀티부팅할게 아니라면 안쓰는 PC를 활용하자.

필자도 사실 서버로의 활용이 불가능할때의 퇴로를 위해

Windows -> Ubuntu 순서로 멀티부팅 가능하게 설치했다.

(* Ubuntu -> Windows 순서로의 멀티부팅 구성은 안되는거라고 해서 도전해보진 않았다.)



3. Ubuntu OS ISO 파일

여러 OS가 있지만 git의 활용법들이 리눅스용으로 검색이 잘되기도 하고 '서버하면 리눅스지' 같은 선입견이 있기도 하다.

이 글을 쓰는 시점에서 Ubuntu Desktop 16.04.1 LTS가 최신이고 필자도 Desktop 16.04.1 LTS를 설치했다.

Ubuntu사이트에서 (https://www.ubuntu.com/download/desktop) 무료로 다운받을 수 있다.


참고1:

Ubuntu Desktop/Server: 필자는 Desktop을 선정했는데

Server는 서버환경에 특화되어 GUI가 없다고 한다.

여차하면 Eclipse, Android Studio를 돌려볼 수 있는 GUI를 바라기도 했고

복잡한 리눅스 명령어 보단 GUI가 쓰기 편하지 않을까란 막연한 기대가 있었다.

(Ref: http://www.morenice.kr/119)

LTS: Long Term Support라고 장기지원을 한단다.(Ref: http://deviantcj.tistory.com/221)


참고2:

현재 Ubuntu 16.04.1 에는 화면 락 상태로 들어가면 키보드가 먹통이 되는 현상이 있다.

(임시방편으로?) 예전 커널로 부팅하면 된다고 한다. (Ref: http://jimnong.tistory.com/600)

지금 찾아보니 설정을 추가하면 된다는데 이미 서버는 켜저있고 사람들은 기다리고 있고.....

확인하기 쉽지 않아서 못했다.



4. 4GB이상 ubuntu OS를 구울 USB

3번에서 ISO파일을 받았다면 USB에 부팅가능하게끔 구우면 된다.

필자는 OS X 라서 디스크 유틸리티를 사용했다.(Ref: http://zerolism.tistory.com/entry/%EB%A7%A5%EC%97%90%EC%84%9C-DMG-%EB%82%98-ISO-%ED%8C%8C%EC%9D%BC-%EB%B6%80%ED%8A%B8-USB-%EB%A1%9C-%EA%B5%BD%EA%B8%B0)

OS X 환경에서 명령어로 굽는 여러 블로그들이 있는데 따라하다가 USB 하나 망가뜨린것 같았다.

혹은 망가져서 잘 안된건지 헷갈리니 그냥 툴을 쓰자.



5. GitLab 설치

GitLab 공식 사이트에 있는 가이드를 따라하면 된다.

* 공식 가이드: https://about.gitlab.com/downloads/#ubuntu1604

필자는 Ubuntu 16.04의 가이드를 따라 했으며 설치하다가 뭐뭐가 안되고 했었는데 그때그때 찾아보고 트러블슈팅 했다.

중요한건 가이드를 따라 완료하고 브라우저에서 '127.0.0.1'로 접속하면 GitLab Sign in/Register 페이지가 뜬다는 것이다.


참고:

Gerrit을 쓸때는 이미 등록된 아이디가 필요했는데

GitLab은 이 서버에 가입하고 로그인 후 사용하면 된다.

이런 구조다 보니 개발자들이 모두 가입해두어야 사용자 관리가 들어간 Project, Repository를 운영할 수 있다.



데스크탑으로 gitlab 서버 구성하기

끝.


'Git' 카테고리의 다른 글

git 트러블 슈팅(trouble shooting)  (0) 2017.02.22
git repository 끼리 merge 하기  (0) 2017.02.16
Git 개념과 사용법  (0) 2017.02.08

Insertion sort(삽입 정렬)



- 1원칙: i의 앞쪽은 이미 정렬된 상태라고 가정(i는 1부터 시작하기에 가능)

- 2원칙: i의 위치에서 자기보다 앞에 있는 (j < i)를 하나씩 비교해보며 작을경우 뒤로 Shifting한다.

- 3원칙: shifting하고 남은 공간에 i에 있던 item을 삽입한다.



i의 앞쪽은 항상 정렬된 상태이고

Best case: O(: 정렬이 거의 다 되어있는 상태에서...

Worst case: O() : 역순정렬된 상태 일때...


public class InsertionSort {


    public void sort(Comparable[] array) {

        for (int i = 1; i < array.length; i++) {

            final Comparable currentItem = array[i];

            int insertPosition = i - 1;

            while (insertPosition >= 0 && currentItem.compareTo(array[insertPosition]) < 0) {

                array[insertPosition + 1] = array[insertPosition];

                insertPosition--;

            }


            insertPosition++;

            if (insertPosition < i) {

                array[insertPosition] = currentItem;

            }

        }

    }

}




Reference:

https://en.wikipedia.org/wiki/Insertion_sort

'Algorithms > Sorting' 카테고리의 다른 글

Quick sort(퀵 정렬)  (0) 2017.06.24
Merge sort(병합 정렬)  (0) 2017.02.08
Selection sort(선택 정렬)  (0) 2017.02.08
Bubble sort(거품? 정렬)  (0) 2017.02.06

+ Recent posts