-
- 선택정렬 : i 값 과 구간을 줄여나가며 비교한다. 가장 작은 값이 i가 된다
- 버블정렬 : 이웃과 비교, 파도타기하면서 뒤에서부터 정렬됨
- 삽입정렬 : 앞에서부터 가는데 i를 중간에 끼워넣는다.(크면 밀고 작으면 break)
나는 가장 작은 수를 찾아서 앞에다 넣는 알고리즘을 사용하였는데
답안에서는 한칸 범위 돌면서 계속 1:1 비교하는 방법이었다.
선택정렬 : 한바퀴씩 돌면서 제일 작은숫자를 찾음
for(int i=0;i<N;i++) { //최솟값을 찾아서 앞에다 둠 int index=i; int min=Integer.MAX_VALUE; for(int j=i;j<N;j++) { if(arr[j]<min) { min=arr[j]; index=j; } } arr[index]=arr[i]; arr[i]=min; }
버블정렬 : 이웃한 두 수 비교해서 바꿈(파도타듯 밀고가서 뒤에서부터 정렬됨)
for(int i=0;i<N-1;i++) { for(int j=0;j<N-i-1;j++) { if(arr[j]>arr[j+1]) { int tmp=arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; } } }
삽입정렬 : 정렬하면서 뒤로 옴(뒤로 민다.)
for(int i=1;i<N;i++) { int tmp=arr[i], j; for(j=i-1;j>=0;j--) { if(arr[j]>tmp) { arr[j+1]=arr[j]; //한칸미루기 }else { break; } } arr[j+1]=tmp; //한바퀴 끝나면 멈춘 j+1번째에 tmp 넣기 }
'자바알고리즘' 카테고리의 다른 글
자바 이진트리 순회(2.DFS - 넓이 우선탐색) (0) 2021.09.05 자바 이진트리 순회(1.DFS - 깊이 우선탐색) (0) 2021.09.04 재귀함수와 스택프레임 (0) 2021.09.03 TreeSet 알고리즘(중복제거 , 정렬가능) (0) 2021.08.22 HashMap<Key, Value> 알고리즘 (0) 2021.08.21 댓글