IT/Algorithm 2018. 6. 17.
[JAVA/자료구조] DoublyLinkedList 더블링크드리스트 코드 알아보기
[JAVA/자료구조] DoublyLinkedList 더블링크드리스트 코드 및 알아보기 https://visualgo.net/en/list 그림으로 알아보기 위와 같은 구조가 더블링크드리스트 ( DoublyLinkedList ) 입니다. 노드와 노드가 서로 연결되어 있다는 점이라는 장점이 있습니다. 단순열결리스트와는 다르게 이전 노드와 다음 노드로 구성되어 있습니다. 단점으로는 이전 노드를 지정하기 위한 변수를 하나 더 사용해야 합니다. 메모리를 더 많이 사용한다는 의미이기도 하죠 왜그런지는 코드를 통해서 알아보도록 하겠습니다. public class DoblyLinkedList {private Node head;privateNode tail;private int size = 0;private class ..
IT/Algorithm 2018. 4. 10.
[JAVA/자료구조] LinkedList 단순연결리스트 코드 및 알아보기
[JAVA/자료구조] LinkedList 링크드리스트 코드 및 알아보기 https://visualgo.net/en/list 그림으로 알아보기 위와 같은 구조가 단순연결리스트 ( LinkedList ) 입니다. 삽입/삭제가 ArrayList보다 빠르다는 장점이 있습니다. 단점으로는 ArrayList는 무작위 접근이 가능하지만 LinkedList 에서는 순차접근만이 가능합니다. 왜그런지는 코드를 통해서 알아보도록 하겠습니다. 우선적으로 class를 만들어 줍니다. 이름은 LinkedList로 만들겠습니다. public class LinkedList {private Node head; // 맨 앞 정보를 가지고 있는 head 노드private Node tail; // 맨 끝 정보를 가지고 있는 tail 노드p..
IT/Algorithm 2018. 4. 2.
[JAVA/알고리즘] Quicksort 큌정렬을 알아보자!
[JAVA/알고리즘] Quicksort 큌정렬을 알아보자! 우선 아래 홈페이지 https://opentutorials.org/course/543/2723 오픈튜토리얼에서 각각의 정렬 원리를 잘 설명한 동영상을 보실 수 있습니다. 퀵 정렬이란? 퀵 정렬은 찰스 앤터니 리처드 호어가 개발한 정렬 알고리즘이다. 다른 원소와의 비교만으로 정렬을 수행하는 비교 정렬에 속한다. 퀵 정렬은 n개의 데이터를 정렬할 때, 최악의 경우에는 O번의 비교를 수행하고, 평균적으로 O번의 비교를 수행한다. 퀵 정렬의 내부 루프는 대부분의 컴퓨터 아키텍처에서 효율적으로 작동하도록 설계되어 있고, 대부분의 실질적인 데이터를 정렬할 때 제곱 시간이 걸릴 확률이 거의 없도록 알고리즘을 설계하는 것이 가능하다고 합니다. 소스코드를 짜기 ..
IT/Algorithm 2018. 3. 27.
[JAVA/자료구조] 큐(Queue)와 스택(Stack) 코드 구현하기
[JAVA/자료구조] 큐(Queue)와 스택(Stack) 구현하기 Java로 큐와 스택을 구현을 해봅시다 우선 큐와 스택을 알아야겠죠? 큐(Queue)란 선입선출 구조입니다. 먼저들어온게 먼저나간다는 소리입니다. 예를 들면 영화 티켓구매하기 위해서는 줄을 서야하겠죠? 맨 앞사람이 가장 빨리 왔으니 가장빨리 예매를 하겠죠? 그림으로 보자면 반대로 스택(Stack)은 후입선출 구조입니다. 나중에 들어온게 먼저 나간다는 소리입니다. 예를 들자면 뷔폐에 있는 접시를 생각하면 되겠습니다. 맨 위에 접시가 올려지고 맨 위 접시가 가장 빨리 나갑니다. 그림으로 보자면 그럼 이제 큐와 스택을 이해했으니 실제로 구현을 해봅시다 먼저 큐(Queue) 입니다. public class Queue { private int fr..