반응형

전체 글 2934

[C언어] 순차 정렬, 버블 정렬, 선택 정렬, 삽입 정열, 쉘 정렬, 퀵 정렬, 병합 정렬, 힙 정렬)

순차 정렬(Sequential Sort) 알고리즘 이번에는 반복적인 방법으로 해결하는 순차 정렬(Sequential Sort) 알고리즘을 살펴볼게요. 정렬 알고리즘은 배열의 자료를 원하는 순으로 배치하는 알고리즘을 말해요. 정렬 알고리즘은 입력 인자로 정렬할 자료들이 있는 배열의 시작 주소와 원소 개수, 비교 알고리즘이 필요합니다. 그리고 수행 후에는 배열 내의 자료들은 원하는 순서로 배치한 상태여야 합니다. 순차 정렬은 맨 앞에서부터 제일 작은 원소를 배치하게 만들어 나가는 알고리즘이예요. 이를 위해 배치할 자리에 있는 원소를 뒤쪽에 있는 원소들과 비교하면서 작은 것을 발견하면 배치할 위치의 원소와 교환해요.순차 정렬(base:배열의 시작 주소, n: 원소 개수, compare:비교 논리) 반복(i:=..

[안드로이드] 24. Java - 키보드 입력

키보드 입력 앞으로 Java 문법을 효과적으로 학습하기 위해 키보드로 입력받는 방법을 간단하게 알고 넘어갑시다. Java에서는 java.util.Scanner 네임 스페이스에서 입력에 관한 Scanner 형식을 제공하고 있습니다. 그리고 Scanner 개체를 생성하는 다양한 방법 중에 System.in 이라는 스트림 개체를 입력 인자로 개체를 생성하면 키보드로 입력받을 수 있는 개체가 만들어집니다. import java.util.Scanner; public class Program { static Scanner scanner = new Scanner(System.in); public static void main(String[] args){ } } 그리고 생성한 Scanner 개체를 참조하는 변수 sca..

[안드로이드] 23. Java - 조건 연산

조건 연산 조건 연산(?:)은 피연산자를 3개를 두는 삼항 연산으로 좌항의 연산이 참이면 두번째 피연자를 연산 결과로 하고 거짓이면 세번째 피연산자를 연산 결과인 연산입니다. 예를 들어 re = (i>j) ? i : j;처럼 표현하면 i가 j보다 크면 re에 i를 설정하고 그렇지 않으면 re에 j를 설정하라는 표현으로 i와 j 중에 큰 값을 re에 설정하는 표현입니다. 하지만 실제 프로그래밍에서 조건에 따라 수행할 구문을 선택할 때 if 조건문이나 if else 조건문을 사용할 수 있고 보다 풍부한 표현을 할 수 있어 조건 연산을 자주 사용하지는 않습니다. private static void exCondition() { int i = 0; int j = 0; int re = 0; i = 3; j = 4;..

[안드로이드] 22. Java - 증감 연산

증감 연산 증감 연산자(++, --)는 단항 연산자로 자신의 값을 1을 증가하거나 감소하는 연산입니다. 증감 연산자도 대입 연산처럼 설정하는 연산이므로 피연산자로 상수는 올 수 없습니다. 따라서 (i+3)++; 과 같은 표현은 문법적 오류가 있는 표현입니다. 증감 연산자는 피연산자 앞에도 올 수 있고 뒤에도 올 수 있습니다. 연산 기호가 피연산자 앞에 오든 뒤에 오든 자기 자신의 값을 1 증가 혹은 감소하는 것은 마찬가지입니다. 하지만 연산 결과에서는 차이를 갖습니다. 만약 연산 기호가 피연산자 앞에 오면 연산 결과는 연산을 수행하고 난 후의 자기 자신입니다. 예를 들어 i 변수의 값이 3일 때 re = ++i;을 수행하면 i는 1 증가한 4이며 연산 결과도 4이므로 re 값도 4입니다. 하지만 연산 기..

[안드로이드] 21. Java - 대입 연산

대입 연산 대입 연산은 좌항의 표현으로 관리하는 변수에 설정하는 연산입니다. 따라서 대입 연산의 좌항에는 상수가 올 수 없습니다. 또한 대입 연산은 우선 순위가 가장 낮은 연산이라는 것에 주의해야 합니다. 대입 연산은 = 기호를 이용하는 단순 대입 연산과 +=, *= 처럼 복합 대입 연산이 있습니다. 단순 대입 연산은 우측 표현식의 값을 좌항에 설정하는 연산입니다. 복합 대입 연산은 자기 자신과 우측 피연산자 사이에 특정 연산을 수행한 결과를 좌항에 설정하는 연산입니다. 예를 들어 i += 3; 은 i = i + 3; 과 같은 표현입니다. private static void exAssign() { int i = 0; i = 3+2; System.out.println("i = 3+2:"+i); //i+3 ..

[안드로이드] 20. Java - 쉬프트 연산

쉬프트 연산 쉬프트 연산은 좌항에 있는 피연산자를 우항에 있는 수만큼 비트 자리 이동하는 연산자입니다. >와 >>> 는 오른쪽 쉬프트 연산자입니다. 왼쪽 쉬프트 연산을 하면 좌항에 있는 피연산자의 값이 우항에 있는 수만큼 왼쪽으로 자리 이동합니다. 빈 자리는 0으로 채워집니다. 만약 3을 왼쪽으로 4자리 이동시키면 연산 결과는 48입니다. 설명을 위해 2진수로 얘기하면 이진수 011(10진수 3)을 왼쪽으로 4자리 이동하면 이진수 0110000(10진수 48)입니다. 3; 2진수 0000 0011, 10진수 3 0000 0000 0000 0000 0000 0000 0000 0011 3와 >>>이 있습니다. >>는 빈 자리를 부호 비트로 채우는 쉬프트 연산이고 >>>는 빈 자리를 0을 채우는 쉬프트 연산입..

[안드로이드] 19. Java - 비트 연산

비트 연산 비트 연산은 비트 단위로 논리 연산을 수행하는 연산입니다. 비트 연산에는 비트 논리곱(&), 비트 논리합(|), 비트 상호 배제(^), 비트 부정(~)이 있습니다. 이 때 특정 자리의 비트가 1이면 참으로 취급하고 0이면 거짓으로 취급합니다. 비트 논리곱(&)은 비트 단위로 논리곱 연산을 합니다. 예를 들어 6&5를 하면 6은 이진수로 110, 5는 이진수로 101 이므로 6&5의 연산 결과는 이진수 100로 10진수 4입니다. 비트 논리합(|)은 비트 단위로 논리합 연산을 합니다. 예를 들어 6|5의 연산 결과는 이진수 111로 10진수 7입니다. 비트 상호 배제(^)는 둘이 같은 값이면 거짓이고 다른 값이면 참입니다. 예를 들어 6^5의 연산 결과는 이진수 011로 10진수 3입니다. 비트..

[안드로이드] 18. Java - 논리 연산

논리 연산 논리 연산은 논리곱(&&), 논리합(||), 부정(!)이 있습니다. 논리곱과 논리합은 boolean 형식의 피연산자가 두 개 오며 부정은 boolean 형식의 피연산자가 한 개 옵니다. 논리곱은 두 개의 피연산자 모두 참일 때 연산 결과가 참이며 그 외에는 거짓입니다. 논리합은 두 개의 피연산자가 모두 거짓일 때 연산 결과가 거짓이며 그 외에는 참입니다. 부정은 피연산자가 참이면 연산 결과가 거짓이고 피연산자가 거짓이면 결과는 참입니다. private static void exLogical() { System.out.println("true && true : "+(true && true)); System.out.println("true && false : "+(true && false)); S..

[안드로이드] 16. Java - 산술 연산

산술 연산 Java 언어에서 제공하는 산술 연산에는 부호, 더하기, 빼기, 곱하기, 나누기, 나머지 연산이 있습니다. ▷ 부호 연산(+, -) 부호 연산은 단항 연산으로 연산자는 플러스와 마이너스가 있으며 피연산자로 정수 형식과 실수 형식이 올 수 있습니다. 플러스 부호 연산은 연산 결과가 피연산자와 같아서 실제 코딩에서 사용하는 것을 보기 힘듭니다. private static void exPositive () { int i = 9; int re = 0; re = +i; System.out.println("re:"+re); } 실행 결과 re:9 마이너스 연산의 결과는 피연산자에 -1을 곱한 값입니다. private static void exNegative () { int i = 9; int re = 0..

반응형