按升序排列字串陣列,每個字串按降序排列
在本文中,我們將深入探討一個與陣列和字串操作相關的獨特且有趣的問題,該問題涉及各種程式語言。問題是“按升序排列字串陣列,每個字串按降序排列”。這個問題是提高您對字串操作、陣列和排序演算法的知識的絕佳方法。
問題陳述
給定一個字串陣列,任務是按升序對陣列進行排序,但每個字串都按降序排序。
解決方案方法
我們可以使用 C++ 標準庫提供的 sort 函式來解決此問題。首先,我們將每個單獨的字串按降序排序。之後,我們將按升序對整個字串陣列進行排序。
示例
以下是實現上述解決方案的程式 -
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void sortArray(char** arr, int size) {
for (int i = 0; i < size; i++) {
int len = strlen(arr[i]);
for (int j = 0; j < len - 1; j++) {
for (int k = j + 1; k < len; k++) {
if (arr[i][j] < arr[i][k]) {
char temp = arr[i][j];
arr[i][j] = arr[i][k];
arr[i][k] = temp;
}
}
}
}
for (int i = 0; i < size - 1; i++) {
for (int j = i + 1; j < size; j++) {
if (strcmp(arr[i], arr[j]) > 0) {
char* temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
int main() {
char* arr[] = {
malloc(sizeof(char) * (4 + 1)), // "acb" + null terminator
malloc(sizeof(char) * (4 + 1)), // "bca" + null terminator
malloc(sizeof(char) * (4 + 1)) // "abc" + null terminator
};
strcpy(arr[0], "acb");
strcpy(arr[1], "bca");
strcpy(arr[2], "abc");
int size = sizeof(arr) / sizeof(arr[0]);
sortArray(arr, size);
printf("The sorted array is: ");
for (int i = 0; i < size; i++) {
printf("%s ", arr[i]);
free(arr[i]); // free the allocated memory for each string
}
printf("\n");
return 0;
}
輸出
The sorted array is: cba cba cba
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
void sortArray(vector<string>& arr) {
for(string& str : arr) {
sort(str.begin(), str.end(), greater<char>());
}
sort(arr.begin(), arr.end());
}
int main() {
vector<string> arr = {"acb", "bca", "abc"};
sortArray(arr);
cout << "The sorted array is: ";
for(const string& str : arr) {
cout << str << " ";
}
cout << endl;
return 0;
}
輸出
The sorted array is: cba cba cba
import java.util.Arrays;
public class Main {
public static void sortArray(String[] arr) {
for (int i = 0; i < arr.length; i++) {
char[] charArray = arr[i].toCharArray();
Arrays.sort(charArray);
arr[i] = new StringBuilder(new String(charArray)).reverse().toString();
}
Arrays.sort(arr);
}
public static void main(String[] args) {
String[] arr = {"acb", "bca", "abc"};
sortArray(arr);
System.out.print("The sorted array is: ");
for (String str : arr) {
System.out.print(str + " ");
}
System.out.println();
}
}
輸出
The sorted array is: cba cba cba
def sort_array(arr):
for i in range(len(arr)):
arr[i] = ''.join(sorted(arr[i], reverse=True))
arr.sort()
arr = ["acb", "bca", "abc"]
sort_array(arr)
print("The sorted array is:", ' '.join(arr))
輸出
The sorted array is: cba cba cba
帶測試用例的解釋
讓我們考慮字串陣列 {"acb", "bca", "abc"}。
當我們將此陣列傳遞給 sortArray 函式時,它首先按降序對每個字串進行排序。陣列變為 {"cba", "cba", "cba"}。
然後它按升序對字串陣列進行排序。但是,由於所有字串都相同,因此排序後的陣列保持 {"cba", "cba", "cba"}。
結論
此問題展示了 sort() 函式的獨特用例。這是一個練習編碼技能並瞭解如何排序字串和陣列的絕佳問題。
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP