Upload
minsuk-lee
View
379
Download
1
Embed Size (px)
Citation preview
소프트웨어 & 프로그래밍 (2)
이민석
컴퓨터공학부, 국민대학교
http://scratchback.net/mis026/entry/
Naver ‘핫토픽키워드’
2015년 5월 9일오전 8시, 11시, 14시
세상의많은문제의본질은...
• 데이터사이의관계를이해하는것
데이터의순서
정렬 (Sorting) : 어떤기준이든.
데이터의소속
분류 (Categorizing) 및인식 : 어떤구분이든.
데이터의연관성
관계 (Relation)의설정 : 어떤이유이든.
데이터의변화
추세(Trend)의 확인 : 어떤관점이든.
데이터의소속
•분류의문제Spam 메일 vs 중요메일
•인식의문제사과인가배인가?
개인가고양이인가?
이자는누구인가?
나이는몇인가?
데이터의연관성
•두데이터사이의관계친구인가?
그렇고그런관계인가?
데이터의변화
•추세의확인과예측지금까지는어땠는데… 다음은어떻게될것인가?
요약 (예, FinTech)
데이터
고객 은행
분류
관계
인식
변화
정렬
수집
신용도
• 고개에게편리함을제공• 데이터를수집• 수집된데이터를열나게처리• 성향과신용도를파악
세상의많은문제의본질은...
•데이터사이의관계를이해하는것
데이터의순서
정렬 (Sorting) : 어떤기준이든.
데이터의소속
분류 (Categorizing) 및인식 : 어떤구분이든.
데이터의연관성
관계 (Relation)의설정 :어떤이유이든.
데이터의변화
추세(Trend)의 확인 : 어떤관점이든.
데이터의정렬방식
• 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
Selection Shell Insertion
Merge Quick Heap
Bubble Comb Cocktail
https://www.youtube.com/watch?v=ZZuD6iUe3Pc
세상에조건없는정답은없다.
• 9가지정렬프로그램의비교 (4 종류의데이터)
Random (임의의데이터)
Few Unique (몇종류로구분되는데이터)
Reversed (완전히순서가거꾸로된데이터)
Almost Sorted (이미거의정렬이된데이터)
이다섯개를정렬해보자
1
45
정답은누가봐도
23
13
2
45
정답은누가봐도
정답은누가봐도
컴퓨터는그누가가아니다.단계적인접근이필요
1
45
Bubble Sort: (1)옆의것과비교하여연속적으로자리바꾸기
23
비교하여왼쪽이크면자리바꾸기
http://en.wikipedia.org/wiki/Bubble_sort
1
45
Bubble Sort: (2)옆의것과비교하여연속적으로자리바꾸기
23
비교하여왼쪽이크면자리바꾸기
1
45
Bubble Sort: (3)옆의것과비교하여연속적으로자리바꾸기
23
비교하여왼쪽이크면자리바꾸기
1
45
Bubble Sort: (4)옆의것과비교하여연속적으로자리바꾸기
23
비교하여왼쪽이크면자리바꾸기
1
45
Bubble Sort: (*)옆의것과비교하여연속적으로자리바꾸기
23
돌아가서처음부터다시 (두번째키큰놈옮기기)
제일키큰놈옮기기완료
1
45
Bubble Sort: (5)옆의것과비교하여연속적으로자리바꾸기
23
비교하여왼쪽이크면자리바꾸기
1
45
Bubble Sort: (6)옆의것과비교하여연속적으로자리바꾸기
23
비교하여왼쪽이크면자리바꾸기
1
45
Bubble Sort: (7)옆의것과비교하여연속적으로자리바꾸기
23
비교하여왼쪽이크면자리바꾸기
1
45
Bubble Sort: (*)옆의것과비교하여연속적으로자리바꾸기
23
돌아가서처음부터다시 (세번째키큰놈옮기기)
1
45
Bubble Sort: (8)옆의것과비교하여연속적으로자리바꾸기
23
비교하여왼쪽이크면자리바꾸기
1
45
Bubble Sort: (9)옆의것과비교하여연속적으로자리바꾸기
23
비교하여왼쪽이크면자리바꾸기
1
45
Bubble Sort: (*)옆의것과비교하여연속적으로자리바꾸기
23
돌아가서처음부터다시 (세번째키큰놈옮기기)
1
45
Bubble Sort: (10)옆의것과비교하여연속적으로자리바꾸기
23
비교하여왼쪽이크면자리바꾸기
1
45
Bubble Sort: (*)옆의것과비교하여연속적으로자리바꾸기
23
Scratch로구현한 Bubble Sort
https://scratch.mit.edu/projects/60531554/#editor
Bubble Sort: (*)옆의것과비교하여연속적으로자리바꾸기
N정렬할원소개수
(값을바꾼적*이있다면) 다음을계속반복 (= 최대 N-1번)
처음원소부터 N-1 번째원소까지다음을차례로반복만약 (현재원소값 > 오른쪽원소값) 이면
값을맞바꿈*한칸오른쪽으로이동
N N - 1
임의순서의데이터 (20개) 준비과정
난수얻어오기
이미목록에있는숫자이면
다시얻어오기
Order 목록에추가하기
Bubble Sort: 정렬알고리즘
값맞바꾸기
비교후
A와 B 값바꾸기
X A
A B
B X
* 이알고리즘은당연히더개선할여지가있습니다.
Bar 그리고연주하기
Bar를높이만큼그리기
이전에그린 Bar 지우기
높이에맞춰연주하기
1
45
Insertion Sort: (1)차례로내자리에끼어들어가기
23
http://en.wikipedia.org/wiki/Insertion_sort
앞에것들과비교하여내자리로들어가기*
3을 1의앞에넣기
1
45
Insertion Sort: (2)차례로내자리에끼어들어가기
23
앞에것들과비교하여내자리로들어가기*
2를 1 앞에넣기
1
45
Insertion Sort: (3)차례로내자리에끼어들어가기
23
앞에것들과비교하여내자리로들어가기*
1, 2, 3을한칸씩옮기고4을 3 앞에넣기
1
45
Insertion Sort: (4)차례로내자리에끼어들어가기
23
앞에것들과비교하여내자리로들어가기*
1, 2, 3, 4를한칸씩옮기고5를 4 앞에넣기
1
45
Insertion Sort: (*)차례로내자리에끼어들어가기
23
Scratch로구현한 Insertion Sort
https://scratch.mit.edu/projects/60531222/#editor
Insertion Sort:차례로내자리에끼어들어가기
두번째원소부터마지막원소까지다음을반복
V 현재위치의원소값현재위치왼쪽원소부터첫원소까지차례로다음을반복
만약 (V < 해당원소값) 이면끼워넣을위치로새로지정해당원소값은오른쪽으로이동
아니면반복그만
왼쪽으로한칸이동끼워넣을위치의원소값 V
V
Insertion Sort: 정렬알고리즘
자기보다앞쪽의키큰놈들한칸씩옮기기
자기자리에끼워넣기
* 이알고리즘은당연히더개선할여지가있습니다.
끝