배열 이해
9999 단어 cbeginnerscodenewbie
배열
배열은 동일한 데이터 유형의 여러 요소를 저장하는 선형 데이터 구조입니다.
동일한 데이터 유형의 데이터 모음으로 정의할 수도 있습니다.
통사론
data_type array_name[SIZE]
예: int data[10]
생성된 위치는 연속적입니다. 즉, 아래와 같이 서로 옆에 있습니다.
크기는 일반적으로 일정합니다. 즉, 일단 선언되면 조정할 수 없습니다.
사용하기 전에 배열의 크기를 지정해야 합니다.
배열 선언 방법
#define SIZE 10
int data[SIZE];
또는
const int SIZE = 10;
int data[SIZE];
배열은 정적 또는 동적으로 초기화할 수도 있습니다. 정적 초기화에서 배열은 선언될 때 값이 할당됩니다. 즉, 컴파일 시간 동안 동적 초기화에서는 프로그램이 실행 중일 때, 즉 런타임에 값이 할당됩니다.
배열은 또한 1차원, 2차원일 수 있습니다. 예:
int data[10]
, int data[10][20]
, int data[5][2][7]
등1차원 배열
어레이 초기화
int a[] = {45,10,25,24,78};
또는 int a[5] = {45,10,25,24,78};
또는int a[5];
a[0] = 45;
a[1] = 10;
a[2] = 25;
a[3] = 24;
a[4] = 78;
위의 코드는 정적 배열의 예이고 아래의 코드는 런타임 시 사용자 입력 값이 동적인 경우입니다.
배열 요소 인쇄
#include<stdio.h>
int main()
{
int i, a[5] = {45,10,25,24,78};
for(i=0;i<5;i++)
{
printf("Value at %d is %d\n",i, a[i]);
}
}
산출
배열에 사용자 입력
#include<stdio.h>
int main()
{
int i, a[5];
for(i=0;i<5;i++)
{
printf("[+]Enter value at position %d >>> ",i);
scanf("%d",&a[i]);
}
printf("\n*****OUTPUT*****\n");
for(i=0;i<5;i++)
{
printf("Value at %d is %d\n",i, a[i]);
}
}
산출
어레이와 관련된 작업
트래버스 작업: 출력, 요소 계산 등을 통해 전체 배열을 통과할 수 있습니다. 트래버스 작업에 걸릴 수 있는 최대 시간은 1, O(1) 정도입니다.
삭제 작업: 요소를 뒤로 이동해야 하므로 배열에서 비용이 많이 드는 작업입니다. 최대 소요 시간은 n, O(n) 순서이고 최소 시간은 1, O(1) 순서입니다.
삽입 작업: 삭제와 마찬가지로 요소가 지정된 순서가 아닌 경우를 제외하고 요소를 삽입하는 동안 요소를 이동해야 하기 때문에 비용이 많이 듭니다.
검색 작업: 배열의 요소를 검색할 수 있으며 첫 번째 위치에서 시작합니다. 최대 소요 시간은
order of n
의 경우 linear search
, order of log n
의 경우 binary search
에서 n 및 최소 시간입니다. 검색은 linear
또는 binary
일 수 있습니다.정렬 작업: 요소를 오름차순 또는 내림차순으로 정렬할 수 있습니다. 배열의 요소를 정렬하는 방법에는 병합 정렬, 빠른 정렬, 버블 정렬, 쉘 정렬, 선택 정렬 및 삽입 정렬과 같은 다양한 방법이 있습니다.
isEmpty 연산은 배열이 비어 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.
isFull 연산은 배열이 가득 차면 true를 반환하고 그렇지 않으면 반환합니다.
차수 1,
O(n)
- 소요 시간은 배열 크기나 다른 유형의 데이터 구조에 관계없이 일정함을 의미합니다.차수 n,
O(n)
- 평균 소요 시간은 배열의 크기에 따라 달라집니다. 즉, 크기가 클수록 소요 시간이 길어집니다.운영 구현 형식
/*
OPEN DOCUMENTATION
Author: *************
Description: ************
Date: ***********
Version: ***
Contact: **********
*/
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#define SIZE 10
int data[SIZE];
void traverse();
void delete_begin();
void delete_at_point(int);
void delete_end();
void insert_begin(int);
void insert_at_point(int, int);
void insert_end(int);
void search(int);
void sort_asc();
void sort_dec();
bool isFull();
bool isEmpty();
int main(){
//menu
int option,item,pos;
printf("\n\n******MENU******\n-----------------------+");
printf("\n1. Traverse Operations");
printf("\n2. Delete Operations");
printf("\n3. Insert Operations");
printf("\n4. Search Operations");
printf("\n5. Sort Operations");
printf("\n6. IsFull Operation");
printf("\n7. IsEmpty Operation");
printf("\n\n");
printf("[+]Select an option >>> ");
scanf("%d",&option);
if(option == 1){
printf("\n******Traverse Operation******\n");
traverse();
}
else if(option == 2){
printf("\n******Delete Operation******\n");
printf("\n1. Delete 1st Element");
printf("\n2. Delete Element at a point");
printf("\n3. Delete last Element");
printf("\n\n[+]Select an option >>> ");
scanf("%d",&option);
if(option == 1){
delete_begin();
}
else if(option == 2){
printf("\n[+]Enter position >>> ");
scanf("%d",&pos);
delete_at_point(pos);
}
else if(option == 3){
delete_end();
}
else{
printf("Invalid Choice, try options 1 to 3");
}
}
else if(option == 3){
printf("\n******insert Operation******\n");
printf("\n1. Insert 1st Element");
printf("\n2. Insert Element at a point");
printf("\n3. Insert last Element");
printf("\n\n[+]Select an option >>> ");
scanf("%d",&option);
if(option == 1){
printf("[+]Enter value to insert >>> ");
scanf("%d",&item);
insert_begin(item);
}
else if(option == 2){
printf("[+]Enter value to insert >>> ");
scanf("%d",&item);
printf("\n[+]Enter position >>> ");
scanf("%d",&pos);
insert_at_point(item,pos);
}
else if(option == 3){
printf("[+]Enter value to insert >>> ");
scanf("%d",&item);
insert_end(item);
}
else{
printf("Invalid Choice, try options 1 to 3");
}
}
else if(option == 4){
printf("\n******Search Operation******\n");
printf("[+] Enter element to search for >>> ");
scanf("%d",&item);
search(item);
}
else if(option == 5){
printf("\n******Sort Operation******\n");
printf("\n1. Sort in Ascending Order");
printf("\n2. Sort in Descending order");
printf("\n\n[+]Enter Option >>> ");
scanf("%d",&option);
if(option == 1){
sort_asc();
}
else if(option == 2){
sort_dec();
}
else{
printf("\n\nInvalid Option!! Try with option 1 or 2!\n\n");
}
}
else if(option == 6){
printf("\n******isFull Operation******\n");
isFull();
}
else if(option == 7){
printf("\n******isEmpty Operation******\n");
isEmpty();
}
else{
printf("\n\nInvalid Options, Try a number between 1 and 7\n\n");
}
printf("~BY PROFF JEFF~\n");
return 0;
}
void traverse(){
//body
}
void delete_begin(){
//body
}
void delete_at_point(int){
//body
}
void delete_end(){
//body
}
void insert_begin(int){
//body
}
void insert_at_point(int, int){
//body
}
void insert_end(int){
//body
}
void search(int){
//body
}
void sort_asc(){
//body
}
void sort_dec(){
//body
}
bool isFull(){
//body
}
bool isEmpty(){
//body
}
2차원 또는 2차원 배열
2차원 배열은 1차원 배열과 유사하지만 행과 열이 있는 그리드(또는 테이블)로 시각화할 수 있습니다.
통사론
#include<stdio.h>
int main()
{
int a[3][3];
}
여기
a
는 어레이의 이름입니다.int
는 배열의 데이터 유형입니다.배열의
size
는 3*3
이므로 배열에 최대 9
개의 항목 또는 값을 저장할 수 있습니다.어레이 초기화
int a[3][3] = {
{40,50,60},
{10,20,30},
{70,80,90}
};
값 표시
#include<stdio.h>
int main(){
int i,j, a[3][3] = {
{40,50,60},
{10,20,30},
{70,80,90}
};
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%d ", a[i][j]);
}
printf("\n");
}
}
산출
사용자로부터 입력 받기
#include<stdio.h>
int main(){
int i,j, a[3][3];
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("[+]Enter value at [%d][%d] >>> ",i,j);
scanf("%d",&a[i][j]);
}
printf("\n");
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%d ", a[i][j]);
}
printf("\n");
}
}
산출
Array 다음에 스택, 큐, 연결 목록 및 구현과 같은 다른 선형 데이터 구조도 확인합니다.
Reference
이 문제에 관하여(배열 이해), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/smartjeff/understand-arrays-2gci텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)