이진 탐색 트리는 '이진 탐색'을 위한 '이진 트리' 입니다.이진 탐색 알고리즘의 경우 배열인 경우에만 사용할 수 있는 문제가 있습니다.링크드 리스트는 중앙 요소를 알 수 없기때문에 이진 탐색이 불가능합니다.이 딜레마를 해결해주는 자료구조가 바로 '이진 탐색 트리' 입니다. 이진 트리 탐색은 규칙이 있습니다. 왼쪽 자식 노드는 부모 노드보다 작고, 오른쪽 자식 노드는 부모 노드보다 크다. 위에서 부터 자식노드를 탐색을 하게 됩니다. 데이터도 위의 규칙대로 추가 되게 됩니다. 만약 20 노드가 삭제 될 시에는 삭제된 노드의 오른쪽 하위 트리에서 가장 작은 값을 가진 노드로 위치가 옮겨가면 됩니다. 이진트리의 문제점 이진 탐색 트리의 경우 동적으로 크기가 증가해도 잘 대처 하며 탐색속도도 매우 훌륭합니다. ..
CategoryProgramming learning (88)
순차 탐색 순서대로 무식하게 찾는 방식입니다. 단순합니다. 조금 더 효율적인 방식을 위해 자기 구성 순차탐색이라는 방식이 존재합니다. 자기 구성 순차 탐색 자기 구성법은 자주 사용되는 항목을 데이터 집합의 앞쪽에 배치함으로써 순차 탐색의 검색 효율을 끌어올리는 방법입니다.아래 세가지 방식으로 구분됩니다.- 전진 이동법(Move To Front)- 전위법(Transpose)- 빈도 계수법(Frequency Count) 전진 이동법 전진 이동법은 어느 항목이 한번 탐색되고 나면, 그 항목을 데이터 집합의 가장 앞 (링크드 리스트에서는 헤드)에 위치시키는 방법입니다. 이렇게 할 경우 한번 찾은 항목을 연이어 또 찾을 때 단번에 탐색을 완료 할 수 있습니다. MS 워드의 '최근 문서' 기능과 같은 원리로 동작 ..
퀵 정렬은 전쟁 전략중의 하나인 분할 정복에 기반한 알고리즘입니다.분할 정복 전략은 적군의 전체를 공략하는 대신, 전체를 구성하는 구성 요소들을 나누어 잘개 쪼개진 적을 공략하는 전법입니다. 퀵 정렬은 아래과정을 거칩니다. 1. 데이터 집합 내에서 임의의 기준 요소를 선택하고, 기준 요소보다 작은 요소들은 순서에 관계없이 기준 요소의 왼편에, 큰 값은 오른편에 위치시킵니다. 2. 이렇게 나눈 데이터 집합들을 다시 1에서와 같이 임의의 기준 요소를 선택 후 같은 방법으로 데이터 집합을 분할합니다. 3. 1, 2의 과정을 더 이상 데이터 집합을 나눌 수 없을 때까지 반복하면 정렬된 데이터 집합을 얻게 됩니다. function quickSort(array){ if(array.length < 2) return ..
삽입정렬이란?데이터 집합을 순회하면서 정렬이 필요한 요소를 뽑아내어 이를 다시 적당한 곳에 삽입해 나가는 알고리즘입니다.뒤섞여있는 트럼프 카드를 순서대로 정리하는 모습과 비슷합니다.데이터 집합에서 요소를 하나씩 뽑아 적절한 곳에 끼워 넣는 것을 반복하여 정렬된 데이터 집합을 찾아냅니다. 버블정렬은 반드시 모든 반복에 대해서 비교를 거치지만 삽입 정렬은 데이터 집합이 정렬되어 있는 경우에는 한번도 비교를 거치지 않습니다. var array= [1,9,-1,5,10,23,-2,7,4,5]; for (i = 0; i 0) && (array[j-1] > temp)) { array[j] = array[j-1];..
버블정렬이란 데이터를 정렬하는 과정이 마치 거품이 수면을 향해서 올라오는 모습과 같다고 붙여진 이름입니다.데이터 집합을 순회하면서 집합 내의 이웃 요소들 끼리의 교환을 통해서 정렬을 수행합니다. 아래 그림을 보시면 스텝이 진행 될 때마다 값을 비교하여 더 큰 숫자가 뒤로 가게 정렬되고 있습니다. 위 그림은 5번에 스텝에 정렬이 완료 되었지만, 더 복잡하게 섞인 정렬의 경우 위의 동작이 계속 반복되게 됩니다.아래 자바스크립트 코드를 참고하시기 바랍니다. #소스코드 var array= [1,9,-1,5,10,23,-2,7,4,5,1]; for (i = 0; i array[i+1]) { temp = array[i+1]; array[i+1] = array[i]; array[i] = temp; i = i-2; }..
0. 디자인 패턴은 클래스 라이브러리가 아니다.디자인 패턴은 클래스 라이브러리보다 더 일반적인 개념이다.클래스 라이브러리는 부품이 되는 프로그램을 의미하지만 디자인 패턴은 부품이 어떻게 조립되어 있고, 각각의 부품이 어떻게 관련해서 큰 기능을 발휘하는지를 표현한 것이다. 1. 클래스 라이브러리 안에서 디자인 패턴이 사용되고 있다. Java의 표준적인 클래스 라이브러리 안에는 디자인 패턴이 많이 활용되고 있습니다.디자인 패턴을 이해하고 있으면 클래스 라이브러리의 역할을 이해하는데 도움이 될 것입니다. 2. 프로그램을 완성품으로 보지 않는다.디자인 패턴의 목표중 하나는 프로그램의 재사용성을 강하게 하는것이다.즉 프로그램을 부품으로써 재이용할 수 있는가를 생각해야한다.따라서 프로그램을 완성품이 아닌 기능을 확..
tail 해당파일의 내용중 마지막부터 10줄을까지 출력한다. 사용법tail [파일명] 옵션에는 -f 나 -원하는 행의수를 입력하면된다-f : 활성화 되면 내용이 실시간으로 갱신-행의 수 : 입력한 행의 수 만큼 출력 파일명에는 출력할 파일명(경로명)을 입력한다. 예1 tail test.txttest.txt파일 내용의 마지막10줄을 출력 예2 tail -12 test.txttest.txt파일 내용의 마지막 12줄을 출력 예3 tail -f test.txttest.txt파일이 갱신되면 실시간으로 마지막 10줄을 갱신하며 출력
[저장 명령어] - :q,:q! => 저장 안하고 나가기 - :w! => 강제로 덮어쓰기 - :w file => 현재내용을 file로 저장 - :wq,:wq! => 저장하고 나가기 [커서이동] - h, j, k, l : 좌우상하 이동 - ^f, ^b : 한페이지 이동 - w, b : 다음단어, 이전단어로 이동 - $, ^, 0 : 줄끝, 줄처음으로 이동 - Shift-G, :1 : 파일끝, 파일처음으로 이동 - (, ) : 이전문단, 다음문단으로 이동 [삽입관련 명령어] - i : 커서의 앞에 삽입 - a : 커서의 뒤에 삽입 - o : 커서 아래에 행추가 - O : 커서 위에 행추가 - r : 커서 위치의 한글자 교체 - R : 커서 위치부터 를 누를때까지 다른 글자로 교체 [삭제관련 명령어] - dd..
alias 영구적 설정하기 .bashrc라는 쉘로 가보자 vi .bashrc vi편집기로 해당 쉘을 열어서 alias rm='rm -i'이런식으로 이미 저장되어 있는 부분이 있는데.bashrc 쉘에다가 vi편집기를 열어 직접 입력해 저장하면 영구적으로 유지가 된다. alias cc='clear' 위 문구를 추가하고 wq로 저장 후 나오면,cc 명령어로 화면 클리어를 할 수 있다. 퍼미션 리눅스에서 존재하는 권한부분이다.리눅스는 여러 사람이 사용하는 다중 사용자 운영체제이기 때문에 각 파일이나 디렉토리에 대해 퍼미션이 존재한다. 앞에 drwxr-x--- 이런식의 이상한 문구가 적혀있는데 이것이 퍼미션 즉, 권한을 상징하는 부분이다.맨앞에 d는 디렉토리를 뜻한다, 그렇지않고 맨앞에 -라고 적혀있는 것은 일반..
프롬프트 리눅스에 root로 로그인 하였을 때 프롬프트 부분이 [root@localhost ~]# 이런식으로 되어있는 것을 볼 수 잇는데 자신이 원하는 걸로 변경해 사용 가능하다. 프롬프트를 저장하고있는 환경변수를 확인해 보자환경변수속 내용을 알기 위해선 echo명령을 이용해야한다.echo명령은 echo명령글을 보면 자세히 알 수 있다. echo $PS1 우리는 C:\> 프롬프트 모양으로 바꿔보자. export PS1="C:\" 이렇게하면 프롬프트가 C:\>로 변경된다. 보통 프롬프트에서는 pwd를 궂이 입력하지 않아도 프롬프트에 디렉토리 표시가 되지만,프롬프트를 바꾸었을 경우 현재 디렉토리 위치가 바뀌어도 프롬프트에 표시가 되지않기 때문에 pwd명령을 이용해 항상 확인하는 습관을 들여야한다. 프롬프트 ..
gcc 한마디로 C컴파일러라고 보면된다. 컴파일러가 컴퓨터가 읽을 수 있게 번역한다는 사실을 알고 있을 것이다.리눅스용으로 대표적인 C컴파일러가 존재하는데 그게바로 gcc이다vi로 코딩을하고 파일명.c로 만든후 gcc를 설치해보자. #include int main(){ int a; printf("Input yout score :"); scanf("%d", &a); printf("%d\n", a); return 0; } 리눅스용 컴파일 설치 yum -y install gcc 무언가가 깔리기 시작하는데 설치가 끝날때 까지 기다린다.다음 코딩을 해보자 gcc -o clang clang.c clang.c라는 파일을 컴파일하여 clang이란 실행파일을 만든다는 것이다.-o은 옵션인데 컴파일할때 쓰이는 옵션이다. ..
echo 명령어 echo 명령은 화면상의 문자열이나 변수의 값(내용)을 그대로 출력하고, 변수는 $ 기호로 시작한다.앞서 alias 명령어 글을 보면 중간에 echo $LANG 이라는 명령을 볼 수 있는데 이게 바로 LANG이라는 변수의 내용을 보여주게 하는 명령어라고 할 수 있다.반면에 그냥 echo LANG 이라고 한다면 그냥 LANG이라는 문자열을 그대로 출력하는 것으로 이부분은 그다지 필요없는 부분이라고 말해도 된다.정리하자면 echo LANG하면 그대로 문자열 출력, $를 붙이면 LANG이라는 변수 값의 내용을 나타낸다 export 명령어export 명령어는 환경변수로 만들어주는 명령어이다.그렇기에 만약에 export LANG=en_US.UTF-8 라는것을 입력하면 LANG이라는 환경변수에 en..
Theme by Anders Noren