배열은 O(N)이다.

배열은 삽입, 삭제, 검색을 할 때 O(N) 즉 loop를 한번 돈다. 아주 기본 중 기본..

C언어로 삽입, 삭제의 알고리즘 코드를 작성해보자.

 

 

배열의 삽입(우로밀착)
int nums[8];
size_t max_count = 0;

void insert_at(size_t index, int number)
{
	size_t i;

	// 우로밀착 코드
	for(i = max_count; i > index; i--)
	{
		nums[i] = nums[i-1];
	}

	nums[index] = number;
	++max_count;
}

void main()
{
	insert_at(0, 1);
	insert_at(0, 2);
	insert_at(0, 3);
	insert_at(0, 4);

	delete_at(0);
	size_t i;
	for (i = 0; i < MAX_NUMS; i++)
	{
		printf("%d\n", nums[i]);
	}
}

배열의 삽입이 0번째 인덱스 즉 가장 첫번째 자리에서 이뤄진다면 0번째 인덱스를 기준(현재 인덱스 포함)으로 오른쪽에 있는 모든 요소들은 우로밀착! 오른쪽으로 한 칸 이동 해야한다. 그래서 for loop가 필요하다.O(N)

 

 

배열의 삭제(좌로밀착)
void delete_at(size_t index)
{
	size_t i;
	for (i = index; i < max_count; i++)
	{
		nums[i] = nums[i + 1];
	}
	--max_count;
}

배열의 삭제가 0번째 인덱스에서 이뤄진다면 0번째 인덱스를 기준으로 좌로 한칸씩 밀착해야 한다.

'C' 카테고리의 다른 글

C언어 스택, 큐 자료구조 소스 코드  (0) 2020.02.26
C언어 빌드과정(컴파일)  (0) 2020.02.25
C언어 void*  (0) 2019.12.20
C 언어 변수에 함수 할당  (0) 2019.12.20
C언어 얕은복사 vs 깊은복사  (0) 2019.12.18

+ Recent posts