2014-11-16 3 views
0

내 코드와 출력은 다음과 같습니다.내 문자열 배열이 C++에서 올바르게 정렬되지 않는 이유는 무엇입니까?

필자는 선택 알고리즘을 알고리즘으로 사용합니다. 시카고 덜 루스 보이즈 + 보스턴과 함께 전환되어 있어야하기 때문에 잘못 내 엑스 코드

Amarillo, TX 
Boston 
Boise 
Calais 
Duluth 
Chicago 
Los Angeles 
New Orleans 

에서

#include <iostream> 
using namespace std; 
void stringSort(string array[], int size) 
{ 
    string temp; 
    int minIndex; 
    for(int count=0;count<size-1; count++) 
    { 
     minIndex=count; 
     for(int index=count+1;index<size;index++) 
     { 
      if(array[index]<=array[minIndex]) 
      { 
       minIndex = index; 
      } 
      temp = array[count]; 
      array[count] = array[minIndex]; 
      array[minIndex] = temp; 

     } 
    } 
} 
int main() 
{ 
    string name[] = 
    { "Los Angeles ", "Boise", "Chicago", "New Orleans", "Calais", "Boston", "Duluth", "Amarillo, TX "}; 

    int numberOfCities; 

    numberOfCities = 8; 

    int i; 
    stringSort(name, numberOfCities); 

    for (i =0; i<numberOfCities; i++) { 
     cout<< name[i]<<endl; 
    } 
    return 0; 
} 

출력. 다른 모든 것은 괜찮습니다. 뭐라 구요?

답변

1

내부 루프 반복마다 스왑을 수행하고 있습니다. 선택 정렬을 사용하면 배열의 나머지 부분을 루프로 검색하여 스왑을 찾을 수 있습니다. 외부 루프의 반복마다 최대 한 번만 스왑해야합니다.

대신이 시도 : 작동

for(int count=0;count<size-1; count++) 
{ 
    minIndex=count; 
    for(int index=count+1;index<size;index++) 
    { 
     if(array[index]<=array[minIndex]) 
     { 
      minIndex = index; 
     } 
    } 
    temp = array[count]; 
    array[count] = array[minIndex]; 
    array[minIndex] = temp; 
} 
+0

을! 설명 주셔서 감사합니다! – Fenrir

관련 문제