자료구조

Array 실습

FDEE 2020. 10. 26. 00:47

1. Insert(idx,value)

- idx 위치부터 뒤에있는 자료들을 모두 +1씩 옮긴다

- 옮김이 끝난 후 idx 위치에 value 값을 넣는다

- Time : O(n)

 

2. delete(idx)

- idx 위치의 값을 제거한다

- idx+1 위치부터 뒤에있는 자료들을 모두 -1씩 옮긴다

- Time : O(n)

 

3. set(idx, value)

- idx 위치의 값을 value로 수정한다

- 별다른 이동이 없이 종료된다

- Time : O(1)

 

4. at(idx)

- idx 위치의 값을 반환한다

 

5. Class Array ADT

class Array {
public:
    int arr_size = 10000; //Array의 정해진 크기
    float* arr; //float을 저장하는 Array arr 선언
    
    Array() { //배열의 생성자, 초기화 작업을 담당한다
        srand(9999); //랜덤 시드 설정
        this->arr = new float[10000]; //Array 클래스의 변수인 arr를 크기 10000인 배열로 설정한다
        for(int i=0; i<10000; i++) {
            arr[i] = rand()%30000; //값을 0~30000의 랜덤수로 지정
        }
    }
    
    //여기서부터 Array의 function들
    //1. 배열의 idx 위치의 값을 반환한다
    int at(int idx) {
        return arr[idx];
    }
    
    //2. 배열의 idx 위치의 값을 수정한다
    void set(int idx, int value) {
        arr[idx] = value;
    }
    
    //3. 배열의 idx 위치의 값을 제거한다
    void del(int idx) {
        // arr[idx] = 0 //제거한다는 의미
        for(int i=idx; i<9999; i++) {
            arr[i] = arr[i+1]; //idx 뒤에있는 값들을 한칸씩 앞으로 이동한다
        }
        
    }
    
    //4. 배열의 idx 위치에 값을 넣는다
    void insert(int idx, int value) {
        for(int i=idx; i<9999; i++) {
            arr[i+1] = arr[i]; //idx 값부터 한칸씩 뒤로 이동한다
        }
        arr[idx] = value; //뒤로이동이 끝난후 값을 넣는다
    }
};

 

6. main 에서 Array 사용하기

int main()
{
    Array myArray = Array();
    //1. insert 사용
    myArray.insert(5, 1); //5위치부터 뒤로 미룬 후 1을 넣는다
    //2. at 사용
    int val = myArray.at(10); //10 위치값을 반환한다
    //3. set 사용
    myArray.set(15, 3); //15 위치값을 3으로 바꾼다
    //4. del 사용
    myArray.del(20); //20위치값을 제거 후 뒷 내용을 앞으로 이동한다
}

'자료구조' 카테고리의 다른 글

Stack (based Array) 실습  (0) 2020.10.26
Singly Linked List 실습문제  (0) 2020.10.26
Array 실습문제  (0) 2020.10.26
List 실습  (0) 2020.10.26
자료구조 중간고사 정리  (0) 2020.10.25