Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 한 문자열을 다른 문자열로 복사하지 않고 정렬된 순서로 문자열 배열 인쇄


한 문자열을 다른 문자열로 복사하지 않고 정렬된 순서로 문자열 배열을 인쇄하는 문제에서 문자열 배열을 정렬해야 합니다. 여기서 프로그래머는 정렬하는 동안 문자열을 다른 문자열로 복사할 수 없습니다.

개념을 더 잘 이해하기 위해 예를 들어보겠습니다.

예시 -

Input : {“Delhi”, “Hyderabad”, “Indore”, “Mumbai”, “Banglore”}
Output : Banglore, Delhi, Hyderabad, Indore, Mumbai

설명 − 사전순으로 주문이 완료됩니다. 따라서 B로 시작하는 방갈로르가 먼저 오고 M으로 시작하는 뭄바이가 마지막에 옵니다.

이제 우리의 문제에 대한 해결책을 도출해 봅시다.

문제를 해결하기 위해 이 문자열의 올바른 인덱스를 저장하는 배열을 만들 수 있습니다. 실제로 문자열의 위치를 ​​변경하려면 대처해야 하기 때문입니다. 따라서 이것이 문제를 해결할 수 있는 한 가지 방법입니다.

인덱스 배열을 사용하고 정렬 기술을 사용하여 정렬한 다음 인쇄합니다. 여기서는 직접 비교를 사용하는 선택 정렬 기술을 사용합니다.

예시

이제 작업을 설명하는 프로그램을 만들어 보겠습니다. -

#include <iostream>
using namespace std;
void sortedStringArray(string arr[], int n){
   int stringIndex[n];
   int i, j, min;
   for (i=0; i<n; i++)
   stringIndex[i] = i;
   for (i=0; i<n-1; i++){
      min = i;
      for (j=i+1; j<n; j++){
         if (arr[stringIndex[min]].compare(arr[stringIndex[j]]) > 0)
            min = j;
      }
      if (min != i){
         int temp = stringIndex[min];
         stringIndex[min] = stringIndex[i];
         stringIndex[i] = temp;
      }
   }
   for (i=0; i<n; i++)
      cout << arr[stringIndex[i]] << ", ";
}
int main(){
   string arr[] = {"Delhi", "Hyderabad", "Indore", "Mumbai", "Banglore"};
   int n = 5;
   sortedStringArray(arr, n);
   return 0;
}

출력

Banglore, Delhi, Hyderabad, Indore, Mumbai,