2016-07-02 1 views
-2

비행 정보의 배열과 비행 횟수를 정렬 기능에 전달 중입니다. 비행 배열 내에 비행 ID가 있습니다 (예 : (H100.15005)). 목표는 비행 정보를 기준으로 비행 정보를 오름차순으로 정렬하는 것입니다. 거품 정렬 기능을 수정하려면 어떻게해야합니까?C에서이 버블 정렬 기능을 어떻게 해결할 수 있습니까?

언어 : C 플랫폼 : Mac OS X의 가상 컴퓨터 : 우분투 (64 비트) 16.04 LTS 편집기 : Vim 7.4 제약 조건 : 기본 정렬 알고리즘을 사용해야합니다.

는 여기에 이전 및 코드와 함께 출력을 정렬 한 후 :

Initial Flights 
     Flight Id From Dest Depart Avail Unit Price 
     H100.15005 SAT HOU 08:00  4  65.00 
     H111.15009 SAT HOU 17:00  10  65.00 
     H555.15022 SAT DFW 08:00  70  70.00 
     H444.15015 ATL NYC 08:00  10  130.00 
     H200.15010 ATL HOU 08:00  20  120.00 
     H222.15005 HOU ATL 10:00  15  125.00 
     H333.15010 ATL NYC 13:00  20  130.00 
     H444.15001 ATL NYC 08:00  10  130.00 
     H100.15006 SAT HOU 08:00  12  65.00 
     H333.15012 ATL NYC 12:55  60  130.00 
     H666.15020 NYC ATL 01:45  50  140.00 
    Sorted Flights 
     Flight Id From Dest Depart Avail Unit Price 
     H100.15005 SAT HOU 08:00  4  65.00 
     H111.15009 SAT HOU 17:00  10  65.00 
     H555.15022 SAT DFW 08:00  70  70.00 
     H444.15015 ATL NYC 08:00  10  130.00 
     H200.15010 ATL HOU 08:00  20  120.00 
     H222.15005 HOU ATL 10:00  15  125.00 
     H333.15010 ATL NYC 13:00  20  130.00 
     H444.15001 ATL NYC 08:00  10  130.00 
     H100.15006 SAT HOU 08:00  12  65.00 
     H333.15012 ATL NYC 12:55  60  130.00 
     H666.15020 NYC ATL 01:45  50  140.00 



    void sortFlights(Flight flightM[], int iFlightCnt) { 
      int i; 
      int j; 
      Flight flightIdTemp; 


      for(i = 0; i < (iFlightCnt - 1); i++) { 
       for(j = (iFlightCnt - 1); j > i; j--) { 
        if(flightM[j-1].szFlightId > flightM[j].szFlightId) { 
         flightIdTemp = flightM[j-1]; 
         flightM[j-1] = flightM[j]; 
         flightM[j] = flightIdTemp; 
        } 
       } 
      } 
     } 
+0

게시물을 편집하여 현재 구현에 대한 잘못된 설명을 포함 할 수 있습니까? – fractalwrench

+0

는'>'대신'strcmp'를 사용합니다. – BLUEPIXY

답변

0

변수 szFlightId 아마 문자열이며 두 문자열의 내용을 비교합니다. C에서 메모리 주소를 비교하는 연산자 >에서는 작동하지 않습니다. 대신 strcmp() 함수를 사용해야합니다.

if (strcmp(flightM[j-1].szFlightId, flightM[j].szFlightId) > 0) 

(사실 우리는 유형을 잘 모르겠지만, 접두사 sz은 종종 제로 종료 문자열을 표시하는 데 사용되어왔다. 마이크로 소프트의 일부 헝가리어 개발자 따라서 헝가리어 표기법이라고이 규칙을 소개했다.)

0
 void sortFlights(Flight flightM[], int iFlightCnt) { 
     int i; 
     int j; 
     Flight flightIdTemp; 


     for(i = 0; i < (iFlightCnt - 1); i++) { 
      for(j = (iFlightCnt - 1); j > i; j--) { 
       if(strcmp(flightM[j-1].szFlightId, flightM[j].szFlightId) > 0) { 
        flightIdTemp = flightM[j-1]; 
        flightM[j-1] = flightM[j]; 
        flightM[j] = flightIdTemp; 
       } 
      } 
     } 
    } 
+0

약간의 설명이 도움이 될 수 있습니다. 왜 한 줄만 수정하면 전체 코드를 복사합니까? –

관련 문제