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
54
55
56
57
58
 
import java.util.Arrays;
import java.util.LinkedList;
 
public class Z21_InsertionSort {
//    public static void main(String[] args) {
//        int[] arr= {6,4,8,5,7,2,9,3,0,1};
//        
//        for(int i=1;i<arr.length;i++) {
//            //삽입할 위치를 찾아 넣기
//            for(int j=i-1;j>=0;j--) {
//                if(arr[j]>arr[j+1]) { //뒤쪽에서 앞으로
//                    int temp = arr[j+1];
//                    arr[j+1]= arr[j];
//                    arr[j]=temp;
//                }
//            }
//        }
//        
//        for(int i=1;i<arr.length;i++) {
//            //삽입할 위치를 찾아 넣기
//            int num=arr[i];
//            int j;
//            for(j=i-1;j>=0;j--) {
//                if(arr[j]>num) { //뒤쪽에서 앞으로
//
//                    arr[j+1]= arr[j];
//
//                } else {
//                    break; //성능을 높일 수 있다.
//                }
//            }
//            arr[j+1] = num;
//        }
//        System.out.println(Arrays.toString(arr));
//    }
    
    public static void main(String[] args) {
        //Linked List 사용하기
        //Swap(쉬프트)작업을 안하는 것으로 성능을 개선
        
        int[] arr= {6,4,8,5,7,2,9,3,0,1};
        LinkedList<Integer> ll = new LinkedList<Integer>();
        
        for(int i=0;i<arr.length;i++) {
            int idx=0;
            for(idx = 0; idx<ll.size();idx++) { //정렬된 데이터에 삽입할 위치 찾기.
                if(arr[i]<ll.get(idx)) {
                    break//삽입은 밖에서.
                    //0번째에서는 데이터가 없으니 해당 포문을 돌지않아 데이터가 들어가지 않는다.
                }
            }
            ll.add(idx,arr[i]); //ll의 idx번째 자리에 arr[i]를 삽입
        }
        System.out.println(ll);
    }
}
 
cs

'Computer Science > Algorithms' 카테고리의 다른 글

[java] Dijkstra 다익스트라 알고리즘  (0) 2019.02.19
Kruskal 크루스칼 알고리즘  (0) 2019.02.18
DisjointSets  (0) 2019.02.18
Permutation 순열  (0) 2019.01.17
Dijkstra 최단경로 알고리즘  (2) 2019.01.08

+ Recent posts