웹 프론트엔드 JS 튜토리얼 JavaScript 버블 정렬 알고리즘

JavaScript 버블 정렬 알고리즘

Dec 19, 2016 pm 02:10 PM
버블 정렬

버블 정렬을 통한 정렬 알고리즘은 상대적으로 간단하고 이해하기 쉽기 때문에 사람들이 가장 먼저 생각하는 정렬 알고리즘입니다. 기본 아이디어는 두 숫자를 동시에 비교하여 다른 항목으로 넘어가기 전에 숫자가 올바른 순서인지 확인하는 것입니다. 각 레벨이 끝나면 귀중한 항목이 올바른 위치로 "정렬"되어 궁극적으로 다른 항목만 정렬됩니다. 원본 텍스트: http://caibaojian.com/javascript-bubble-sort.html

알고리즘 구현 아이디어

첫 번째 항목과 두 번째 항목 비교

첫 번째 경우 항목이 두 번째 항목 뒤에 있어야 합니다.

두 번째 항목과 세 번째 항목을 비교

두 번째 항목이 세 번째 항목 뒤에 있어야 하면 서로 바꿉니다

데이터 끝

이 과정은 데이터가 완전히 정렬될 때까지 여러 번 반복됩니다. 매번 마지막 항목이 올바르게 정렬되므로 정렬할 항목이 점점 줄어듭니다. 이해를 돕기 위해 배열을 비교해 보겠습니다: [3, 2, 4, 5, 1].

비교 과정 예시

첫 번째는 첫 번째 항목과 두 번째 항목을 비교하는 긍정 정렬입니다. 항목, 2가 3보다 작으므로 3이 마지막에 순위가 지정되고 결과는 [2,3,4,5,1]입니다.

두 번째와 세 번째 항목의 순서가 정확하므로 필요하지 않습니다. 교환; 세 번째와 네 번째 항목도 정확하므로 교환할 필요가 없습니다. 네 번째와 다섯 번째 항목이 교환되며 결과는 [2,3,4,1,5]입니다.

첫 번째 항목을 다시 반복합니다. 그리고 두 번째 아이템은 차례로 세 번째와 네 번째 아이템을 교환하여 [2,3,1,4,5]

세 번째 사이클에서는 두 번째와 세 번째 아이템을 [2,1]로 교환합니다. ,3,4,5]

네 번째 사이클에서는 첫 번째와 두 번째 교환은 [1,2,3,4,5]

버블 정렬을 구현하는 첫 번째 단계입니다. 배열의 두 항목을 교환하는 방법을 만듭니다. 이 방법은 많은 비효율적인 정렬에서 비교적 일반적입니다. 간단한 자바스크립트 구현 코드는 다음과 같습니다.

function swap(items, firstIndex, secondIndex){
    var temp = items[firstIndex];
    items[firstIndex] = items[secondIndex];
    items[secondIndex] = temp;
}
로그인 후 복사

via 위에서 언급했듯이 이 정렬 알고리즘은 여러 정렬이 필요하기 때문에 상대적으로 비효율적입니다. 배열에 n개의 항목이 있다고 가정하면 계산하는 데 2의 n제곱이 필요합니다. http://caibaojian.com/javascript-bubble-sort.html

<🎜에서 원본 텍스트를 살펴보겠습니다. >Positive Directional 버블링 알고리즘

function bubbleSort(items){

    var len = items.length,
        i, j, stop;

    for (i=0; i < len; i++){
        for (j=0, stop=len-i; j < stop; j++){
            if (items[j] > items[j+1]){
                swap(items, j, j+1);
            }
        }
    }

    return items;
}
로그인 후 복사
via 외부 루프는 루프 주기 수를 제어하고 내부 루프는 항목 간의 정렬 비교입니다.

Reverse Bubble Sort

function bubbleSort(items){
    var len = items.length,
        i, j;

    for (i=len-1; i >= 0; i--){
        for (j=len-i; j >= 0; j--){
            if (items[j] < items[j-1]){
                swap(items, j, j-1);
            }
        }
    }

    return items;
}
로그인 후 복사
via 위 두 코드의 결과는 동일하며 작은 것부터 큰 것까지 정렬되지만 루프의 순서는 약간 다릅니다. 둘 다 긍정적인 순서 거품 거품입니다.

역 버블 정렬

사실 첫 번째 항목이 두 번째 항목보다 작을 때 위치를 바꾸는 등의 크기 변경을 판단하는 것입니다.

function bubbleSort2(items){
var len = items.length,
i,j,stop;
for(i=0;i<len; i++){
for(j=0,stop=len-i;j<stop;j++){
if(items[j]<items[j+1]){
swap(items,j,j+1);
}
}
}
return items;
}
로그인 후 복사
요약

을 통해 다시 한번 말하지만, 버블 정렬은 알고리즘을 이해하고 추가 정보를 제공하는 데 도움이 되는 간단한 도구일 뿐입니다. 더 많은 지식을 얻으려면. 우리가 가장 많이 사용하는 것은 아마도 내장된 Array.prototype.sort() 프로토타입 메소드일 것입니다. 그것이 더 효율적이기 때문입니다.



JavaScript 버블 정렬 알고리즘과 관련된 더 많은 글은 PHP 중국어 홈페이지를 주목해주세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 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 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

C++ 함수 포인터로 코드 변환: 효율성과 재사용성 향상 C++ 함수 포인터로 코드 변환: 효율성과 재사용성 향상 Apr 29, 2024 pm 06:45 PM

함수 포인터 기술은 특히 다음과 같이 코드 효율성과 재사용성을 향상시킬 수 있습니다. 효율성 향상: 함수 포인터를 사용하면 중복 코드를 줄이고 호출 프로세스를 최적화할 수 있습니다. 재사용성 향상: 함수 포인터를 사용하면 공통 함수를 사용하여 다양한 데이터를 처리할 수 있으므로 프로그램 재사용성이 향상됩니다.

C#에서 버블 정렬 알고리즘을 구현하는 방법 C#에서 버블 정렬 알고리즘을 구현하는 방법 Sep 19, 2023 am 11:10 AM

C#에서 버블 정렬 알고리즘 구현 방법 버블 정렬은 인접한 요소를 여러 번 비교하고 위치를 교환하여 배열을 정렬하는 간단하지만 효과적인 정렬 알고리즘입니다. 이번 글에서는 C# 언어를 사용하여 버블 정렬 알고리즘을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공하겠습니다. 먼저 버블정렬의 기본원리를 이해해보자. 알고리즘은 배열의 첫 번째 요소부터 시작하여 이를 다음 요소와 비교합니다. 현재 요소가 다음 요소보다 크면 위치를 바꾸고, 현재 요소가 다음 요소보다 작으면 그대로 유지합니다.

Java 데이터 구조 및 알고리즘: 심층 설명 Java 데이터 구조 및 알고리즘: 심층 설명 May 08, 2024 pm 10:12 PM

데이터 구조와 알고리즘은 Java 개발의 기초입니다. 이 기사에서는 Java의 주요 데이터 구조(예: 배열, 연결 목록, 트리 등)와 알고리즘(예: 정렬, 검색, 그래프 알고리즘 등)을 자세히 살펴봅니다. 이러한 구조는 배열을 사용하여 점수를 저장하고, 연결된 목록을 사용하여 쇼핑 목록을 관리하고, 스택을 사용하여 재귀를 구현하고, 대기열을 사용하여 스레드를 동기화하고, 트리 및 해시 테이블을 사용하여 빠른 검색 및 인증을 저장하는 등 실제 사례를 통해 설명됩니다. 이러한 개념을 이해하면 효율적이고 유지 관리가 가능한 Java 코드를 작성할 수 있습니다.

PHP 배열을 위한 사용자 정의 정렬 알고리즘 작성 가이드 PHP 배열을 위한 사용자 정의 정렬 알고리즘 작성 가이드 Apr 27, 2024 pm 06:12 PM

사용자 정의 PHP 배열 정렬 알고리즘을 작성하는 방법은 무엇입니까? 버블 정렬: 인접한 요소를 비교하고 교환하여 배열을 정렬합니다. 선택 정렬: 매번 가장 작거나 가장 큰 요소를 선택하고 현재 위치와 바꿉니다. 삽입 정렬: 순서가 지정된 부품에 요소를 하나씩 삽입합니다.

C++ 함수 성능 최적화의 알고리즘 선택 및 최적화 기술 C++ 함수 성능 최적화의 알고리즘 선택 및 최적화 기술 Apr 23, 2024 pm 06:18 PM

C++ 기능 성능 최적화 알고리즘 선택: 효율적인 알고리즘(예: 빠른 정렬, 이진 검색)을 선택합니다. 최적화 기술: 작은 함수 인라인, 캐싱 최적화, 전체 복사 방지 및 루프 언롤링. 실제 사례: 배열의 최대 요소 위치를 검색할 때 최적화 후 이진 검색 및 루프 확장을 사용하므로 성능이 크게 향상됩니다.

다양한 PHP 배열 정렬 알고리즘의 복잡성 분석 다양한 PHP 배열 정렬 알고리즘의 복잡성 분석 Apr 27, 2024 am 09:03 AM

PHP 배열 정렬 알고리즘 복잡도: 버블 정렬: O(n^2) 빠른 정렬: O(nlogn) (평균) 병합 정렬: O(nlogn)

버블링 이벤트의 의미는 무엇입니까? 버블링 이벤트의 의미는 무엇입니까? Feb 19, 2024 am 11:53 AM

버블링 이벤트는 웹 개발에서 이벤트가 요소에서 트리거될 때 이벤트가 문서 루트 요소에 도달할 때까지 상위 요소로 전파된다는 것을 의미합니다. 이러한 전파 방식은 마치 버블이 바닥에서 점차 솟아오르는 것과 같아서 버블링 이벤트(Bubbling Event)라고 합니다. 실제 개발에서는 버블링 이벤트가 어떻게 작동하는지 알고 이해하는 것이 이벤트를 올바르게 처리하는 데 매우 중요합니다. 다음에서는 구체적인 코드 예제를 통해 버블링 이벤트의 개념과 사용법을 자세히 소개합니다. 먼저, 상위 요소와 세 개의 하위 요소가 있는 간단한 HTML 페이지를 만듭니다.

Go 언어의 시간 복잡도와 공간 복잡도 분석 Go 언어의 시간 복잡도와 공간 복잡도 분석 Mar 27, 2024 am 09:24 AM

Go는 쓰기 쉽고, 읽기 쉽고, 유지 관리하기 쉬우면서도 고급 프로그래밍 개념을 지원하도록 설계된 프로그래밍 언어로 점점 더 인기를 얻고 있습니다. 시간 복잡도와 공간 복잡도는 알고리즘과 데이터 구조 분석에서 중요한 개념으로, 프로그램의 실행 효율성과 메모리 크기를 측정합니다. 이번 글에서는 Go 언어의 시간 복잡도와 공간 복잡도를 분석하는 데 중점을 둘 것입니다. 시간 복잡도(Time Complexity) 시간 복잡도는 알고리즘의 실행 시간과 문제 크기 사이의 관계를 나타냅니다. 시간은 일반적으로 Big O 표기법으로 표현됩니다.

See all articles