Computer >> Máy Tính >  >> Lập trình >> C ++

In mảng chuỗi theo thứ tự đã sắp xếp mà không sao chép chuỗi này sang chuỗi khác trong C ++


Trong bài toán in một mảng chuỗi theo thứ tự đã sắp xếp mà không sao chép chuỗi này sang chuỗi khác, ta cần sắp xếp mảng chuỗi. Ở đây, người lập trình không thể sao chép một chuỗi vào một chuỗi khác trong khi sắp xếp.

Hãy lấy một ví dụ để hiểu rõ hơn về khái niệm này:

Ví dụ -

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

Giải thích - Về mặt ngôn ngữ, việc đặt hàng đã được thực hiện. Vì vậy, Bangalore bắt đầu bằng B đứng đầu và Mumbai bắt đầu bằng M đứng sau cùng.

Bây giờ, hãy cố gắng tìm ra giải pháp cho vấn đề của chúng ta.

Để giải quyết vấn đề, chúng ta có thể tạo một mảng lưu trữ chỉ mục chính xác của các chuỗi này vì thực sự việc thay đổi vị trí của chuỗi cần được thực hiện. Vì vậy, đây là một cách khả thi để giải quyết vấn đề.

Chúng tôi sẽ sử dụng một mảng chỉ mục và sử dụng kỹ thuật sắp xếp để sắp xếp nó và sau đó in nó. Ở đây, chúng tôi sẽ sử dụng kỹ thuật sắp xếp lựa chọn sử dụng so sánh trực tiếp.

Ví dụ

Bây giờ chúng ta hãy tạo một chương trình để minh họa hoạt động -

#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;
}

Đầu ra

Banglore, Delhi, Hyderabad, Indore, Mumbai,