오랜된 포스팅/Java

정렬(sorting) - Bubble sort

Toycode 2018. 5. 22. 14:13

"Lotto"번호에 정렬함수 적용..

(사진출처)https://docs.tibco.com/pub/sfire-bauthor/7.6.0/doc/html/ko-KR/GUID-515A5FC6-AB64-4550-849E-E5F74D019C16.html



이번 포스팅은 지난 "중복값 제거"

2018/05/19 - [Java/Open source] - 배열(Array)의 중복값 방지

에서 뽑은 배열안의 수들을 정렬하는 방법을 포스팅하겠습니다.



우선 정렬이라는 알고리즘에는 많은 방법들이 있는데

http://blog.naver.com/PostView.nhn?blogId=tyboss&logNo=70046128991

다양하고 자세한 정렬은 위의 링크를 걸어두도록 하겠습니다.


필자는 여러 정렬방법을 보았을때

두가지 선택 사항이 있다고 생각하는데.


첫 번째는 자신이 하고있는 프로잭트가 "처리속도"를 요구하는 지의 여부.

두 번째는 자신에게 익숙한 코드인가?


지금부터 2개의 코드를 사용하여 포스팅하겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
public class booleanTest {
 
    public static void main(String[] args) {
 
        // 변수선언
        int RandomNums[] = new int[6];
        boolean swit[] = new boolean[45]; // 0~44
 
        // 초기화
        for (int i = 0; i < swit.length; i++) {
            swit[i] = false;
        }
 
        // 랜덤 값 추출
        int i = 0;
        while (i < RandomNums.length) {
            int temp = (int) (Math.random() * 45); // 0~44
            if (swit[temp] == false) {
                swit[temp] = true;
                RandomNums[i] = temp + 1// 1~45
                i++;
            }
        }
 
        // 정렬 전 출력
        System.out.println("정렬 전 출력");
        for (int z = 0; z < RandomNums.length; z++) {
            System.out.println("RandomNums[" + z + "] = " + RandomNums[z]);
        }
 
        // 정렬
        while(true){
            int temp=0;
            for (int j = 0; j < RandomNums.length-1; j++) {
                for (int j2 = j+1; j2 < RandomNums.length; j2++) {
                    if(RandomNums[j]>RandomNums[j2]) {
                        temp=RandomNums[j2];
                        RandomNums[j2]=RandomNums[j];
                        RandomNums[j]=temp;
                    }
                }
            }
            break;
        }
        
        // 정렬 후 출력
        System.out.println("\n정렬 후 출력");
        for (int z = 0; z < RandomNums.length; z++) {
            System.out.println("RandomNums[" + z + "] = " + RandomNums[z]);
        }
    }
 
}
cs


첫 번째는 위와 같이 버블형 정렬이다.

첫 번째 인자값을 나머지 인자값들과 비교하여 정렬하는 방식이다.



두 번째 방법으로는 에디터 안에서 함수를 사용하는 방법인데

첫 번째 방법과 동일한 효과를 가져올 수 있는데


장점으로는 버그가 거의 없다.

단점으로는 빠른 속도처리를 요하는 작업을 할때에는

처리속도가 다소 느릴 수 있다.