찾다
기술 주변기기일체 포함파이썬의 데이터 구조에 대한 상위 7 개 알고리즘 - 분석 Vidhya

소개

효율적인 소프트웨어 개발은 ​​알고리즘과 데이터 구조에 대한 강력한 이해에 달려 있습니다. 사용 편의성으로 유명한 Python은 목록, 사전 및 세트와 같은 내장 데이터 구조를 제공합니다. 그러나 이러한 구조에 적절한 알고리즘을 적용함으로써 진정한 전력이 발휘됩니다. 알고리즘은 본질적으로 문제를 해결하기위한 일련의 규칙 또는 프로세스입니다. 알고리즘과 데이터 구조의 결합 된 사용은 기본 스크립트를 고도로 최적화 된 응용 프로그램으로 변환합니다.

이 기사에서는 Python 데이터 구조에 대한 7 가지 필수 알고리즘을 살펴 봅니다.

파이썬의 데이터 구조에 대한 상위 7 개 알고리즘 - 분석 Vidhya

목차

  • 소개
  • 파이썬 데이터 구조에서 알고리즘의 중요성
  • 파이썬 데이터 구조에 대한 7 가지 주요 알고리즘
      1. 이진 검색
      1. 정렬을 병합하십시오
      1. 빠른 정렬
      1. Dijkstra의 알고리즘
      1. 너비 우선 검색 (BFS)
      1. 깊이 우선 검색 (DFS)
      1. 해싱
  • 결론

파이썬 데이터 구조에서 알고리즘의 중요성

효과적인 알고리즘은 몇 가지 이유로 중요합니다.

  • 향상된 성능 : 적합한 데이터 구조와 결합 된 잘 설계된 알고리즘, 시간 및 공간 복잡성을 최소화하여 더 빠르고 효율적인 프로그램을 만듭니다. 예를 들어, 이진 검색 트리의 이진 검색은 검색 시간을 극적으로 줄입니다.
  • 대규모 데이터 세트의 확장 성 : 대규모 데이터 세트를 처리하는 데 효율적인 알고리즘이 필수적이므로 처리가 신속하고 리소스 효율적으로 유지됩니다. 최적화 된 알고리즘이 없으면 대형 데이터 구조에서의 작업이 계산 비용이 많이 듭니다.
  • 개선 된 데이터 구성 : 알고리즘은 구조 내에서 데이터를 구성하고 검색 및 조작을 단순화하는 데 도움이됩니다. QuickSort 및 Mergesort와 같은 알고리즘 정렬은 쉽게 액세스 할 수 있도록 어레이 또는 링크 된 목록에 요소를 배열합니다.
  • 최적화 된 메모리 사용 : 알고리즘은 메모리 소비를 최소화하여 효율적인 스토리지에 기여합니다. 예를 들어 해시 기능은 해시 테이블에 데이터를 배포하여 검색 시간을 줄입니다.
  • 라이브러리 기능 활용 : 많은 Python 라이브러리 (Numpy, Pandas, Tensorflow)는 데이터 조작을위한 정교한 알고리즘에 의존합니다. 이러한 알고리즘을 이해하면 개발자는 이러한 라이브러리를 효과적으로 사용할 수 있습니다.

파이썬 데이터 구조에 대한 7 가지 주요 알고리즘

7 가지 중요한 알고리즘을 살펴 보겠습니다.

1. 이진 검색

이진 검색은 정렬 된 목록 내에서 특정 항목을 찾기위한 고효율 알고리즘입니다. 검색 간격을 반으로 반복적으로 나누어 작동합니다. 대상 값이 중간 요소보다 낮 으면 검색은 하반부에서 계속됩니다. 그렇지 않으면 상반부에서 계속됩니다. 이 로그 시간 복잡성 (O (log n))는 대형 데이터 세트에 대한 선형 검색보다 훨씬 빠릅니다.

알고리즘 단계

  1. 초기화 : left 으로 0으로, right 배열 길이 마이너스 1로 설정합니다.
  2. 반복 : left right 보다 작거나 같지 않습니다.
    • 중간 지수 ( mid )를 계산합니다.
    • 중간 요소를 대상 값과 비교하십시오. 동일하면 mid 돌아갑니다.
    • 대상이 중간 요소보다 낮 으면 right 에서 mid - 1 까지 업데이트하십시오.
    • 그렇지 않으면 left mid 1 까지 업데이트하십시오.
  3. 대상을 찾을 수 없음 : 대상을 찾지 않고 루프가 완료되면 -1을 반환하십시오.

코드 구현 (그림)

 def binary_search (arr, target) :
    # ... (원본 텍스트에서와 같이 구현)

이진 검색은 데이터베이스 인덱싱과 같은 빠른 조회가 필요한 상황에서 매우 중요합니다.

2. 정렬을 병합하십시오

MERGE SORT는 각 하위 목록에 하나의 요소 만 포함 될 때까지 분류되지 않은 목록을 작은 하위 목록으로 되풀이 할 수있는 분할 및 정체 알고리즘입니다. 그런 다음 이러한 하위 목록을 반복적으로 병합하여 단일 분류 된 목록이 얻을 때까지 새로운 분류 된 하위 목록을 생성합니다. 시간 복잡성은 O (n log n)이므로 대형 데이터 세트에 효율적입니다.

알고리즘 단계

  1. 나누기 : 각 절반에 하나의 요소 만 포함 될 때까지 배열을 두 개의 반쪽으로 재귀 적으로 분할하십시오.
  2. 정복 : 각 하위 목록을 재귀 적으로 정렬합니다 (기본 케이스 : 단일 요소 목록이 이미 정렬되었습니다).
  3. 병합 : 각 하위리스트의 요소를 비교하고 작은 요소를 결과 목록에 배치하여 정렬 된 하위 목록을 단일 정렬 목록으로 병합합니다.

코드 구현 (그림)

 def merge_sort (ARR) :
    # ... (원본 텍스트에서와 같이 구현)

Merge 정렬은 특히 링크 된 목록을 정렬하고 메모리에 완전히 맞지 않을 수있는 대형 데이터 세트를 처리하는 데 특히 적합합니다.

3. 빠른 정렬

또 다른 분할 및 대응 알고리즘 인 빠른 정렬은 '피벗'요소를 선택하고 피벗보다 낮은 지에 따라 다른 요소를 두 개의 하위 배열로 분할합니다. 이 프로세스는 전체 배열이 정렬 될 때까지 하위 배열에 재귀 적으로 적용됩니다. 최악의 시간 복잡성은 O (n²)이지만 평균 사례 성능은 O (n log n)이므로 매우 실용적인 정렬 알고리즘입니다.

알고리즘 단계

  1. 피벗 선택 : 피벗 요소를 선택하십시오 (다양한 전략이 존재 함).
  2. 분할 : 배열을 재 배열하여 피벗보다 작은 요소가 이전에 있고 더 큰 요소가 그 뒤에 있습니다.
  3. 재귀 : 피벗 전후에 서브 배열에 빠른 정렬을 재귀 적으로 적용하십시오.

코드 구현 (그림)

 def Quick_Sort (ARR) :
    # ... (원본 텍스트에서와 같이 구현)

빠른 정렬의 효율성은 많은 라이브러리와 프레임 워크에서 인기있는 선택입니다.

4. Dijkstra의 알고리즘

DijkStra의 알고리즘은 음성 에지 가중치가없는 그래프에서 단일 소스 노드에서 다른 모든 노드로 가장 짧은 경로를 찾습니다. 그것은 소스에서 가장 작은 잠정 거리로 노드를 반복적으로 선택하고 이웃의 거리를 업데이트합니다.

알고리즘 단계

  1. 초기화 : 모든 노드에 임시 거리를 할당하십시오 : 소스 노드의 경우 0, 다른 모든 노드의 경우 무한대.
  2. 반복 : 방문하지 않은 노드가 있지만 :
    • 가장 작은 임시 거리로 방문하지 않은 노드를 선택하십시오.
    • 각 이웃에 대해 선택한 노드를 통한 거리를 계산하십시오. 이 거리는 현재 임시 거리보다 짧은 경우 이웃의 임시 거리를 업데이트하십시오.
  3. 종료 : 알고리즘은 모든 노드가 방문되었거나 우선 순위 대기열이 비어있을 때 종료됩니다.

코드 구현 (그림)

 수입 Heapq

def dijkstra (그래프, 시작) :
    # ... (원본 텍스트에서와 같이 구현)

DIJKSTRA의 알고리즘에는 GPS 시스템, 네트워크 라우팅 및 다양한 경로 결말 문제에 응용 프로그램이 있습니다.

5. 폭이 넓은 검색 (BFS)

BFS는 그래프 레벨을 레벨별로 탐색하는 그래프 트래버스 알고리즘입니다. 루트 노드에서 시작하여 다음 단계의 이웃으로 이동하기 전에 모든 이웃을 방문합니다. 비가 중 그래프에서 가장 짧은 경로를 찾는 데 유용합니다.

알고리즘 단계

  1. 초기화 : 루트 노드가 포함 된 대기열과 방문한 노드를 추적하는 세트로 시작하십시오.
  2. 반복 : 대기열이 비어 있지 않지만 :
    • 노드를 탈취하십시오.
    • 방문하지 않으면 방문대로 표시하고 방문하지 않은 이웃을 흡수하십시오.

코드 구현 (그림)

 컬렉션에서 수입 Deque

def bfs (그래프, 시작) :
    # ... (원본 텍스트에서와 같이 구현)

BFS는 소셜 네트워크, 피어 투 피어 네트워크 및 검색 엔진에서 응용 프로그램을 찾습니다.

6. 깊이 우선 검색 (DFS)

DFS는 역 추적 전에 각 지점을 따라 가능한 한 깊게 진행하여 그래프를 탐색하는 또 다른 그래프 트래버스 알고리즘입니다. 스택 (또는 재귀)을 사용하여 방문 할 노드를 추적합니다.

알고리즘 단계

  1. 초기화 : 루트 노드가 포함 된 스택과 방문한 노드를 추적하는 세트로 시작하십시오.
  2. 반복 : 스택이 비어 있지 않은 동안 :
    • 노드를 팝하십시오.
    • 방문하지 않으면 방문대로 표시하고 방문하지 않은 이웃을 스택에 밀어 넣으십시오.

코드 구현 (그림)

 def dfs_iterative (그래프, 시작) :
    # ... (원본 텍스트에서와 같이 구현)

DFS는 토폴로지 분류, 사이클 감지 및 퍼즐 해결에 사용됩니다.

7. 해싱

해싱은 효율적인 데이터 검색을 위해 해시 테이블의 지수에 키를 매핑하는 기술입니다. 해시 함수는 키를 색인으로 변환하여 빠른 조회, 삽입 및 삭제를 허용합니다. 다른 키가 동일한 인덱스에 매핑되는 상황을 해결하려면 충돌 처리 메커니즘이 필요합니다.

알고리즘 단계

  1. 해시 기능 : 지수에 키를 매핑하려면 해시 함수를 선택하십시오.
  2. 삽입 : 해시 함수를 사용하여 인덱스를 계산하고 키 값 쌍을 해당 버킷 (처리 충돌)에 삽입하십시오.
  3. 조회/삭제 : 해시 함수를 사용하여 인덱스를 찾고 키 값 쌍을 검색/삭제하십시오.

코드 구현 (그림)

 클래스 해시 가능 :
    # ... (원본 텍스트에서와 같이 구현)

해시 테이블은 데이터베이스, 캐시 및 빠른 데이터 액세스가 필요한 기타 응용 프로그램의 기본입니다.

결론

알고리즘의 견고한 파악과 데이터 구조와의 상호 작용은 효율적인 Python 프로그래밍에 가장 중요합니다. 이러한 알고리즘은 성능을 최적화하고 확장 성을 개선하며 복잡한 문제를 해결하기위한 필수 도구입니다. 이러한 기술을 마스터함으로써 개발자는 강력하고 고성능 응용 프로그램을 구축 할 수 있습니다.

위 내용은 파이썬의 데이터 구조에 대한 상위 7 개 알고리즘 - 분석 Vidhya의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
하나의 프롬프트는 모든 주요 LLM의 보호 조치를 우회 할 수 있습니다하나의 프롬프트는 모든 주요 LLM의 보호 조치를 우회 할 수 있습니다Apr 25, 2025 am 11:16 AM

Hiddenlayer의 획기적인 연구는 LLMS (Leading Lange Language Models)에서 중요한 취약점을 드러냅니다. 그들의 연구 결과는 "정책 인형극"이라는 보편적 인 바이 패스 기술을 보여줍니다.

5 가지 실수 대부분의 기업은 올해 지속 가능성으로 만듭니다.5 가지 실수 대부분의 기업은 올해 지속 가능성으로 만듭니다.Apr 25, 2025 am 11:15 AM

환경 책임과 폐기물 감소에 대한 추진은 기본적으로 비즈니스 운영 방식을 바꾸는 것입니다. 이 혁신은 제품 개발, 제조 프로세스, 고객 관계, 파트너 선택 및 새로운 채택에 영향을 미칩니다.

H20 Chip Ban Jolts China AI 회사이지만 오랫동안 충격을 받기 위해 자랑했습니다.H20 Chip Ban Jolts China AI 회사이지만 오랫동안 충격을 받기 위해 자랑했습니다.Apr 25, 2025 am 11:12 AM

Advanced AI 하드웨어에 대한 최근 제한은 AI 지배에 대한 확대 된 지정 학적 경쟁을 강조하여 중국의 외국 반도체 기술에 대한 의존도를 드러냅니다. 2024 년에 중국은 3,800 억 달러 상당의 반도체를 수입했습니다.

OpenAi가 Chrome을 구매하면 AI는 브라우저 전쟁을 지배 할 수 있습니다.OpenAi가 Chrome을 구매하면 AI는 브라우저 전쟁을 지배 할 수 있습니다.Apr 25, 2025 am 11:11 AM

Google의 Chrome의 잠재적 인 강제 매각은 기술 산업 내에서 강력한 논쟁을 불러 일으켰습니다. OpenAi가 65%의 글로벌 시장 점유율을 자랑하는 주요 브라우저를 인수 할 가능성은 TH의 미래에 대한 중요한 의문을 제기합니다.

AI가 소매 미디어의 고통을 해결할 수있는 방법AI가 소매 미디어의 고통을 해결할 수있는 방법Apr 25, 2025 am 11:10 AM

전반적인 광고 성장을 능가 함에도 불구하고 소매 미디어의 성장은 느려지고 있습니다. 이 성숙 단계는 생태계 조각화, 비용 상승, 측정 문제 및 통합 복잡성을 포함한 과제를 제시합니다. 그러나 인공 지능

'AI는 우리이고 우리보다 더 많아요''AI는 우리이고 우리보다 더 많아요'Apr 25, 2025 am 11:09 AM

깜박 거리는 스크린 모음 속에서 정적으로 오래된 라디오가 딱딱합니다. 이 불안정한 전자 제품 더미, 쉽게 불안정하게, 몰입 형 전시회에서 6 개의 설치 중 하나 인 "The-Waste Land"의 핵심을 형성합니다.

Google Cloud는 다음 2025 년 인프라에 대해 더 진지하게 생각합니다.Google Cloud는 다음 2025 년 인프라에 대해 더 진지하게 생각합니다.Apr 25, 2025 am 11:08 AM

Google Cloud의 다음 2025 : 인프라, 연결 및 AI에 대한 초점 Google Cloud의 다음 2025 회의는 수많은 발전을 선보였으며 여기에서 자세히 설명하기에는 너무 많았습니다. 특정 공지 사항에 대한 심도있는 분석은 My의 기사를 참조하십시오.

Talking Baby ai Meme, Arcana의 550 만 달러 AI 영화 파이프 라인, IR의 비밀 후원자 공개Talking Baby ai Meme, Arcana의 550 만 달러 AI 영화 파이프 라인, IR의 비밀 후원자 공개Apr 25, 2025 am 11:07 AM

이번 주 AI 및 XR : AI 구동 창의성의 물결은 음악 세대에서 영화 제작에 이르기까지 미디어와 엔터테인먼트를 통해 휩쓸고 있습니다. 헤드 라인으로 뛰어 들자. AI 생성 콘텐츠의 영향력 증가 : 기술 컨설턴트 인 Shelly Palme

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구