PC 및 웹 개발에서 모바일 장치 또는 임베디드 시스템용 코딩으로 전환하는 프로그래머는 자신의 데이터 구조와 알고리즘을 선택하고 코딩하는 데 더 많은 시간을 소비한다는 사실을 알게 됩니다. 더 적은 메모리와 제한된 데이터 저장 공간으로 인해 사전 구축된 라이브러리나 프레임워크를 위한 공간이 없습니다. 따라서 자신의 정렬 루틴을 작성해야 하는 사람들을 위해 낮은 버블 정렬을 선택할 때 고려해야 할 몇 가지 사항이 있습니다.
배경
버블 정렬은 메모리에 있는 항목 목록을 정렬하는 간단한 알고리즘입니다. 주어진 배열에서 코드는 인접한 항목의 각 쌍을 반복적으로 비교하고 순서가 맞지 않으면 교체합니다. 더 이상 스왑이 발생하지 않을 때까지 프로세스가 반복됩니다. 정렬이 진행되는 동안 배열을 볼 수 있는 경우 낮은 값은 위로 "버블링"되고 큰 값은 아래로 가라앉습니다. 다음은 Visual Basic 2010의 관련 코드입니다.
오늘의 비디오
동안 스왑 = True 스왑 = False For i = 0 To tbl.length - 2 If tbl (i) > tbl (i + 1) then tmp = tbl (i) tbl (i) = tbl (i + 1) tbl (i + 1) = tmp 스왑 = True End If Next End While
버블 정렬을 선택해야 하는 경우
이 알고리즘에는 몇 가지 장점이 있습니다. 작성하기 쉽고 이해하기 쉽고 몇 줄의 코드만 있으면 됩니다. 데이터가 제자리에 정렬되어 메모리 오버헤드가 거의 없고 일단 정렬되면 데이터가 메모리에 저장되어 처리할 준비가 됩니다. 가장 큰 단점은 정렬하는 데 걸리는 시간입니다. 평균 시간은 테이블 요소 수가 증가함에 따라 거의 기하급수적으로 증가합니다. 항목 수의 10배는 정렬하는 데 거의 100배의 시간이 걸립니다.
기타 배열 정렬
정렬 알고리즘은 복잡성, 속도 및 오버헤드가 다양합니다. 버블 정렬은 가장 복잡하지만 가장 느린 정렬 중 하나입니다. 삽입 정렬 및 교환 정렬과 같은 다른 배열 기반 정렬은 조금 더 빠르지만 더 많은 코드가 필요합니다(아래 참조 참조). 배열 기반 정렬의 주요 이점은 가장 적은 코드를 사용하고 작업 메모리를 가장 적게 사용한다는 것입니다. 항목이 수백 개 미만인 간단한 배열에 대해 이러한 정렬을 고려하십시오.
복잡한 정렬 알고리즘
더 큰 데이터 세트에는 더 복잡한 코드와 더 많은 메모리가 필요합니다. 빠른 정렬과 힙 정렬은 데이터 세트를 분할하고 복사하여 비교 횟수를 최적화합니다. 빠른 정렬은 계속해서 목록을 나눈 다음 정렬된 순서로 다시 조합합니다. 힙 정렬은 데이터를 트리 구조로 복사한 다음 트리를 탐색하여 데이터를 다시 순서대로 복사합니다. 둘 다 빠르고 효율적이지만 더 많은 코드와 훨씬 더 많은 작업 스토리지를 사용합니다. 대용량 데이터 세트에 대해 이러한 알고리즘을 선택하십시오.