찾다

버블 정렬

Dec 19, 2016 pm 01:18 PM
버블 정렬

1. 알고리즘 설명

버블 정렬: 인접한 데이터를 순서대로 비교하여 앞에는 작은 데이터, 뒤에는 큰 데이터를 넣습니다. 즉, 첫 번째 패스에서 1번째와 2번째를 비교합니다. 숫자가 마지막이고 소수가 첫 번째이고, 두 번째 숫자를 세 번째 숫자와 비교하고, 큰 숫자가 마지막이고, 소수가 첫 번째입니다. 그런 식으로 가장 큰 숫자가 두 번째 숫자로 "롤링"됩니다. 한 번 통과하면 다음으로 큰 숫자가 끝에서 두 번째 위치로 스크롤됩니다. n-1(n은 순서가 지정되지 않은 데이터 수) 통과로 정렬이 완료될 수 있습니다.

다음 5개의 정렬되지 않은 데이터를 예로 들어 보겠습니다.

40 8 15 18 12(이 기사에서는 첫 번째 패스의 비교 프로세스만 자세히 설명합니다.)

1차 패스: 8 15 18 12 40

버블 정렬

두 번째 여행: 8 15 12 18 40

세 번째 여행: 8 12 15 18 40

4차 여행: 8 12 15 18 40

2. 알고리즘 분석

평균 시간 복잡도: O(n2)

공간 복잡도: O(1)( 교환에 사용됨) )

안정성: 안정적

3. 알고리즘 구현

//交换data1和data2所指向的整形  
void DataSwap(int* data1, int* data2)  
{  
    int temp = *data1;  
    *data1 = *data2;  
    *data2 = temp;  
}  
  
/******************************************************** 
*函数名称:BubbleSort 
*参数说明:pDataArray 无序数组; 
*          iDataNum为无序数据个数 
*说明:    버블 정렬 
*********************************************************/  
void BubbleSort(int* pDataArray, int iDataNum)  
{  
    for (int i = 0; i < iDataNum - 1; i++)   //走iDataNum-1趟  
        for (int j = 0; j < iDataNum - i - 1; j++)      
            if (pDataArray[j] > pDataArray[j + 1])  
                DataSwap(&pDataArray[j], &pDataArray[j + 1]);  
}

4. 알고리즘 최적화

도 버블 정렬 알고리즘 수행 가능 비교 중에 교환이 있는지 여부를 표시를 사용하여 기록합니다. 교환이 없으면 전체 배열이 순서대로 정렬 프로세스를 종료한 것입니다. 그렇지 않으면 다음 비교를 계속합니다.

/******************************************************** 
*函数名称:BubbleSort 
*参数说明:pDataArray 无序数组; 
*          iDataNum为无序数据个数 
*说明:    버블 정렬 
*********************************************************/  
void BubbleSort(int* pDataArray, int iDataNum)  
{  
    BOOL flag = FALSE;    //记录是否存在交换  
    for (int i = 0; i < iDataNum - 1; i++)    //走iDataNum-1趟  
    {  
        flag = FALSE;  
        for (int j = 0; j < iDataNum - i - 1; j++)      
            if (pDataArray[j] > pDataArray[j + 1])  
            {  
                flag = TRUE;  
                DataSwap(&pDataArray[j], &pDataArray[j + 1]);  
            }  
          
        if (!flag)    //上一趟比较中不存在交换,则退出排序  
            break;  
    }  
}



더 많은 버블정렬 관련 글은 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를 무료로 생성하십시오.

뜨거운 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

메모장++7.3.1

메모장++7.3.1

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

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전