빠른 알고리즘 연구 노트는 --sort과를 qsort를 제공 정렬

  지식과 기술이 자신의 학습과 반사를위한 동시에 가난한 일부를 제공 할 수 있도록 저자을 기록, 알고리즘과 데이터 구조를 학습 인터넷과 책을 통해 알게 여기에 저자의 관련 연구 노트에 저장 아이디어와 도움이됩니다. 

 

  시작 정렬에서

  기본적인 정렬 알고리즘은 본 문서의 범위를 넘어, 기지국 과정에서 데이터 구조의 원리를 배울 거품 정렬, 삽입 정렬, 빠른 정렬 및 선택 정렬 알고리즘을 포함한다. 이 알고리즘은 직접 정렬 도구를 사용하여 설계 과정에 소개합니다. C / C ++는 실제 알고리즘 디자인에 사용하기위한 표준 빠른 정렬 알고리즘을 사용자에게 제공, 사용자는 간단한 기능을 달성하기 위해 정렬 함수를 호출 할 수 있습니다. 특히, C qsort가 기능을 정렬 제공 구현하고, C ++은 사용자의 종류를 제공합니다.

 

  종류

  C ++ 표준 템플릿 라이브러리의 종류 달성하기 위해 기능 템플릿 정렬 기능을 제공합니다. 사용시, 필요 헤더 파일 <알고리즘>을 포함, 표준 C ++ std 네임 스페이스를 선언합니다.  

    사용법 #include <알고리즘>
     은 Using  네임 스페이스 표준;         // 해당 헤더 파일을 포함 할 필요가 정렬을 사용하고, 네임 스페이스 표준을 사용하여

  실제 사용 분류, 주로 정렬 다음 두 가지 형식 매개 변수에 의해 제공 정렬이 호출합니다. 실현의 빠른 정렬 알고리즘 정렬의 시간 복잡도는 O (nlogn)입니다.

    정렬 (시작, 종료)         // 데이터 처리를 시작 포함하고 엔드 포함하지 않는 것을 특징으로 정렬하여 끝까지간에 데이터를 
    정렬 (시작, 끝, CMP)를      // 시작과 끝 CMP 맞춤 정렬을 사용 정렬 데이터 사이

   첫 번째 요소의 시작 주소 데이터 시작 정렬에있어서, 최종 주소 다음 주소 데이터는 마지막 요소는 (이다 소트 주소가 요소의 끝이 아니다 있습니다  ). 첫 번째 형태는 기본 치료는 오름차순으로 요소를 주문합니다.

  예 : A [5] 호출 5 int 배열 된 정렬 데이터를 포함 어레이 (A, A + 5) 정렬 배열 오름차순의 요소에서 INT. 데이터의 종류의 첫 번째 요소의 주소는입니다 점에 유의, 마지막 주소 요소는 + 4, 다음 하나되어야한다 정렬 최종 매개 변수를 호출 할 때하는 것은 + 5 마지막 요소 주소입니다.

  호출의 첫 번째 종류의 기본 데이터 유형에 대한 ++ 지원 c를 정렬 할 수 있습니다. 또한, CMP에 의해 지정된 규칙을 정렬, 두 번째 종류의 형태로 사용자가 호출 할 수있다, 따라서, 사용자 정의 데이터 구조가 정렬됩니다. 데이터를 사용하여 CMP 두 함수의 매개 변수로 분류하고, 반환 값에 해당하는 경우, 첫 번째 데이터 열 이전에 상기 제 2 데이터로 파라미터를 입력하는 부울 값을 반환한다. CMP의 일반적인 구조는 다음과 같이.

    BOOL CMP (B 형, A 형) 
    { 
     판정 규칙         // 함수 CMP 해당하는 데이터의 앞의 행의 데이터 B를 반환하면        
    }

  예 : 티켓, 이름과 정렬 학생 데이터의 배열에 필요한 일부 포함 된 정보를 학생 데이터 구조의 사용자 정의 유형, 그래서 점수 일치를 눌러 내림차순의 점수에 의해 학생을위한 가장 낮은에서 최고에 티켓 번호. 구조 정의 학생들은 아래와.

    타입 정의의 구조체 {
         INT의 SNO;
        INT의 점수;
         이름 [ 20 ]; 
    }학생;

  정렬 및 학생 데이터 구조의 정보에 따르면, 비교 규칙은 함수 정의의 CMP 정렬을 기록 할 수 있습니다. , C ++ 비교 연산자가 비교에 따라 참 또는 거짓의 논리 값을 반환 여기에 있습니다.

    BOOL CMP (학생, 학생 b) 
    { 
        IF (a.score =! b.score)
                 복귀 a.score <b.score;     // 보다 높은 점수가 반환 값에 해당하는 B, 이때 B 행 의 앞 
        사람의  > b.sno a.sno;     // 학생 수가 미만 B, 반환 값, B 행 앞의 현재 참인 
    }

  배열에 학생 정보 학생 100 [100], 단순히 종류 (A는 A + (100), CMP)을 통해 호출 할 수 정렬이 포함되어 있습니다.

  주 : 첫 번째 통화가 실제로 종류의 형태로 사용된다 <연산자 취급 비교 및 ​​순위 데이터 (작은 전방)을 지시하고, 사용자는 사용자 정의 데이터 구조에 대한 <연산자를 정의하므로 경우, 직접적으로 사용될 수있다 첫 번째 정렬 순서의 형태이다.

 

  를 qsort

  C 언어 라이브러리를 qsort 퀵 알고리즘 인터페이스 표준 C 또는 C ++ 표준 라이브러리 STDIO.H 라이브러리 cstdlib을 사용할 필요를 포함하여 제공합니다. 상대적 용어를 사용하는 경우 더 복잡 포함 qosrt 함수 포인터로서 동작 C ++에 의해 제공되는 정렬과 비교. 다음를 qsort 함수는 함수 원형에 도시.  

    보이드 를 qsort는 ( 보이드는 * 베이스 , NUM의 size_t와,이 size_t 크기     // 베이스 어드레스 비교 요소를 시작 NUM 비교하는 소자의 수이며, 하나의 요소가 차지하는 크기는 바이트 길이를 비교하는 
                INT () (※ 비교 예를 CONST  공극 * CONST  공극 *));     // 소정 비교 룰 요소에 대한 비교 예 함수 포인터

  용도를 qsort 함수, 데이터베이스 비교의 개시 위치까지 데이터의 수를 비교하는 단일 NUM 데이터 사이즈 일괄 차지하는 바이트 수 면적 비교 될 데이터를 지정. 그리고 비교 예 함수 포인터는 상기 영역의 요소를 비교하는 방법을 지정.

  이는 비교 함수의 아래 글을 소개합니다. 비교 요소 때문에 도시를 qsort 함수 원형, 인수로서 무효 * 기능 비교 예 개의 포인터와 같이, 손으로 형식 변환에 대한 필요성은, 내부 비교 함수의 함수 반환 값 INT를 원래의 데이터의 포맷의 종류에 맞게 타입 함수가 0보다 작은 값을 반환 할 때, 첫 번째 파라미터는 제 2 인수의 앞에 배치되며, 리턴 값은 첫 번째 파라미터가 두번째 파라미터 뒤에 배치되어, 0보다 크다. 다음은 사용 qsort가 필요한 특정 순위 기능을 달성하기 위해 필요한 종류를 정렬합니다. EXP1 사용될 수 있고, C 언어 비교 연산자가 0과 1과 약간 다른 양 및 음의 값을 반환하는데 필요한 비교 함수를 리턴 유의? EXP2 : 간략한 형태 절차 방식 exp3.

    INT compareStudent ( const를  무효 * A, CONST  무효 *의 B) 
    { 
        경우 ((학생 *)는 -> socre = (학생 *) B -!> 점수)
             반환 ((학생 *)는 -> socre> (학생 *) B -> 점수)? 1 : 0 ;         
        다른 
            반환 ((학생 *)는 -> SNO <(학생 *) B -> SNO)? 1 : 0 ; 
     }

  도시 된 실시 예에서 예를 들어 다음과 같이 호출 함수를 qsort 않는 경우에 정렬 비교 함수를 정의.

    를 qsort는 (A, 100 는 sizeof (학생), compareStudent);         //이 데이터를 정렬 백 명 학생들이 갖는 비교 기능을 사용

 

  또 다른 참고 : C 및 C ++가 빠르게 종류의 편리한 인터페이스를 사용자에게 제공하지만, 실제 알고리즘 학습 과정에서, 알고리즘의 원리를 이해하고 중요 알고리즘에 의해 가져온 편의를 즐길 수 있지만. 위의 외에도 때문에 그들은 단지 서로를 격려 다른 사람에 의해 제공되는 제한된 도구를 사용하지 않도록, 이해하고, 기본 원칙 및 정렬 알고리즘의 구체적인 실현을 마스터해야합니다 또한 인터페이스를 사용하는 방법을 배우게하지만.

 

  참조 :

  종류 - C ++ 참조

  qsort가 - C ++ 참조

  알고리즘 p235-242 노트

  왕 포럼 컴퓨터 테스트 시스템 대학원 가이드 - 2.1 주문

추천

출처www.cnblogs.com/yhjoker/p/11161984.html