在 C++ 中按排序顺序打印字符串数组,无需将一个字符串复制到另一个字符串
在本问题中,需要按排序顺序打印字符串数组,而无需将一个字符串复制到另一个字符串。我们需要对字符串数组进行排序。在此过程中,程序员在排序时不能将一个字符串复制到另一个字符串。
让我们来看一个例子来更好地理解这个概念。
示例 −
Input : {“Delhi”, “Hyderabad”, “Indore”, “Mumbai”, “Banglore”}
Output : Banglore, Delhi, Hyderabad, Indore, Mumbai说明 − 排序是按字典顺序进行的。因此,以 B 开头的 Bangalore 排在首位,以 M 开头的 Mumbai 排在最后。
现在,让我们尝试找到解决我们问题的方案。
为了解决这个问题,我们可以创建一个数组来存储这些字符串的正确索引,因为实际上改变字符串的位置需要进行复制。所以这是一种可能的解决方法。
我们将使用一个索引数组,并使用排序技术对其进行排序,然后打印结果。这里,我们将使用直接比较的选择排序技术。
示例
现在让我们创建一个程序来说明其工作原理 −
#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,
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP