按排序顺序打印字符串数组,而无需在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,