47
소프트웨어 & 프로그래밍 (2) 이민석 컴퓨터공학부, 국민대학교

Data and Sorting Algoritm

Embed Size (px)

Citation preview

Page 1: Data and Sorting Algoritm

소프트웨어 & 프로그래밍 (2)

이민석

컴퓨터공학부, 국민대학교

Page 2: Data and Sorting Algoritm
Page 3: Data and Sorting Algoritm

http://scratchback.net/mis026/entry/

Page 4: Data and Sorting Algoritm
Page 5: Data and Sorting Algoritm
Page 6: Data and Sorting Algoritm

Naver ‘핫토픽키워드’

2015년 5월 9일오전 8시, 11시, 14시

Page 7: Data and Sorting Algoritm

세상의많은문제의본질은...

• 데이터사이의관계를이해하는것

데이터의순서

정렬 (Sorting) : 어떤기준이든.

데이터의소속

분류 (Categorizing) 및인식 : 어떤구분이든.

데이터의연관성

관계 (Relation)의설정 : 어떤이유이든.

데이터의변화

추세(Trend)의 확인 : 어떤관점이든.

Page 8: Data and Sorting Algoritm

데이터의소속

•분류의문제Spam 메일 vs 중요메일

•인식의문제사과인가배인가?

개인가고양이인가?

이자는누구인가?

나이는몇인가?

Page 9: Data and Sorting Algoritm

데이터의연관성

•두데이터사이의관계친구인가?

그렇고그런관계인가?

Page 10: Data and Sorting Algoritm

데이터의변화

•추세의확인과예측지금까지는어땠는데… 다음은어떻게될것인가?

Page 11: Data and Sorting Algoritm

요약 (예, FinTech)

데이터

고객 은행

분류

관계

인식

변화

정렬

수집

신용도

• 고개에게편리함을제공• 데이터를수집• 수집된데이터를열나게처리• 성향과신용도를파악

Page 12: Data and Sorting Algoritm

세상의많은문제의본질은...

•데이터사이의관계를이해하는것

데이터의순서

정렬 (Sorting) : 어떤기준이든.

데이터의소속

분류 (Categorizing) 및인식 : 어떤구분이든.

데이터의연관성

관계 (Relation)의설정 :어떤이유이든.

데이터의변화

추세(Trend)의 확인 : 어떤관점이든.

Page 13: Data and Sorting Algoritm

데이터의정렬방식

• Simple sorts Insertion sort Selection sort

• Efficient sorts Merge sort Heap sort Quick sort

• Bubble sort and variants Bubble sort Shell sort Comb sort

• Distribution sort Counting sort Bucket sort Radix sort

• …

문제는다같다:데이터를순서대로정렬하는것

답은다르다:데이터의모양에따라서

http://en.wikipedia.org/wiki/Sorting_algorithm

Page 14: Data and Sorting Algoritm

Selection Shell Insertion

Merge Quick Heap

Bubble Comb Cocktail

https://www.youtube.com/watch?v=ZZuD6iUe3Pc

Page 15: Data and Sorting Algoritm

세상에조건없는정답은없다.

• 9가지정렬프로그램의비교 (4 종류의데이터)

Random (임의의데이터)

Few Unique (몇종류로구분되는데이터)

Reversed (완전히순서가거꾸로된데이터)

Almost Sorted (이미거의정렬이된데이터)

Page 16: Data and Sorting Algoritm

이다섯개를정렬해보자

Page 17: Data and Sorting Algoritm

1

45

정답은누가봐도

23

Page 18: Data and Sorting Algoritm

13

2

45

정답은누가봐도

Page 19: Data and Sorting Algoritm

정답은누가봐도

컴퓨터는그누가가아니다.단계적인접근이필요

Page 20: Data and Sorting Algoritm

1

45

Bubble Sort: (1)옆의것과비교하여연속적으로자리바꾸기

23

비교하여왼쪽이크면자리바꾸기

http://en.wikipedia.org/wiki/Bubble_sort

Page 21: Data and Sorting Algoritm

1

45

Bubble Sort: (2)옆의것과비교하여연속적으로자리바꾸기

23

비교하여왼쪽이크면자리바꾸기

Page 22: Data and Sorting Algoritm

1

45

Bubble Sort: (3)옆의것과비교하여연속적으로자리바꾸기

23

비교하여왼쪽이크면자리바꾸기

Page 23: Data and Sorting Algoritm

1

45

Bubble Sort: (4)옆의것과비교하여연속적으로자리바꾸기

23

비교하여왼쪽이크면자리바꾸기

Page 24: Data and Sorting Algoritm

1

45

Bubble Sort: (*)옆의것과비교하여연속적으로자리바꾸기

23

돌아가서처음부터다시 (두번째키큰놈옮기기)

제일키큰놈옮기기완료

Page 25: Data and Sorting Algoritm

1

45

Bubble Sort: (5)옆의것과비교하여연속적으로자리바꾸기

23

비교하여왼쪽이크면자리바꾸기

Page 26: Data and Sorting Algoritm

1

45

Bubble Sort: (6)옆의것과비교하여연속적으로자리바꾸기

23

비교하여왼쪽이크면자리바꾸기

Page 27: Data and Sorting Algoritm

1

45

Bubble Sort: (7)옆의것과비교하여연속적으로자리바꾸기

23

비교하여왼쪽이크면자리바꾸기

Page 28: Data and Sorting Algoritm

1

45

Bubble Sort: (*)옆의것과비교하여연속적으로자리바꾸기

23

돌아가서처음부터다시 (세번째키큰놈옮기기)

Page 29: Data and Sorting Algoritm

1

45

Bubble Sort: (8)옆의것과비교하여연속적으로자리바꾸기

23

비교하여왼쪽이크면자리바꾸기

Page 30: Data and Sorting Algoritm

1

45

Bubble Sort: (9)옆의것과비교하여연속적으로자리바꾸기

23

비교하여왼쪽이크면자리바꾸기

Page 31: Data and Sorting Algoritm

1

45

Bubble Sort: (*)옆의것과비교하여연속적으로자리바꾸기

23

돌아가서처음부터다시 (세번째키큰놈옮기기)

Page 32: Data and Sorting Algoritm

1

45

Bubble Sort: (10)옆의것과비교하여연속적으로자리바꾸기

23

비교하여왼쪽이크면자리바꾸기

Page 33: Data and Sorting Algoritm

1

45

Bubble Sort: (*)옆의것과비교하여연속적으로자리바꾸기

23

Page 35: Data and Sorting Algoritm

Bubble Sort: (*)옆의것과비교하여연속적으로자리바꾸기

N정렬할원소개수

(값을바꾼적*이있다면) 다음을계속반복 (= 최대 N-1번)

처음원소부터 N-1 번째원소까지다음을차례로반복만약 (현재원소값 > 오른쪽원소값) 이면

값을맞바꿈*한칸오른쪽으로이동

N N - 1

Page 36: Data and Sorting Algoritm

임의순서의데이터 (20개) 준비과정

난수얻어오기

이미목록에있는숫자이면

다시얻어오기

Order 목록에추가하기

Page 37: Data and Sorting Algoritm

Bubble Sort: 정렬알고리즘

값맞바꾸기

비교후

A와 B 값바꾸기

X A

A B

B X

* 이알고리즘은당연히더개선할여지가있습니다.

Page 38: Data and Sorting Algoritm

Bar 그리고연주하기

Bar를높이만큼그리기

이전에그린 Bar 지우기

높이에맞춰연주하기

Page 39: Data and Sorting Algoritm

1

45

Insertion Sort: (1)차례로내자리에끼어들어가기

23

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

앞에것들과비교하여내자리로들어가기*

3을 1의앞에넣기

Page 40: Data and Sorting Algoritm

1

45

Insertion Sort: (2)차례로내자리에끼어들어가기

23

앞에것들과비교하여내자리로들어가기*

2를 1 앞에넣기

Page 41: Data and Sorting Algoritm

1

45

Insertion Sort: (3)차례로내자리에끼어들어가기

23

앞에것들과비교하여내자리로들어가기*

1, 2, 3을한칸씩옮기고4을 3 앞에넣기

Page 42: Data and Sorting Algoritm

1

45

Insertion Sort: (4)차례로내자리에끼어들어가기

23

앞에것들과비교하여내자리로들어가기*

1, 2, 3, 4를한칸씩옮기고5를 4 앞에넣기

Page 43: Data and Sorting Algoritm

1

45

Insertion Sort: (*)차례로내자리에끼어들어가기

23

Page 45: Data and Sorting Algoritm

Insertion Sort:차례로내자리에끼어들어가기

두번째원소부터마지막원소까지다음을반복

V 현재위치의원소값현재위치왼쪽원소부터첫원소까지차례로다음을반복

만약 (V < 해당원소값) 이면끼워넣을위치로새로지정해당원소값은오른쪽으로이동

아니면반복그만

왼쪽으로한칸이동끼워넣을위치의원소값 V

V

Page 46: Data and Sorting Algoritm

Insertion Sort: 정렬알고리즘

자기보다앞쪽의키큰놈들한칸씩옮기기

자기자리에끼워넣기

* 이알고리즘은당연히더개선할여지가있습니다.

Page 47: Data and Sorting Algoritm