在Java中按逆字母顺序对字符串数组排序
我的任务是将此代码转换为反向排序,但我一辈子都不知道该怎么做。这些是我的排序、FindLarge和swap方法。我有一种感觉,我在这里错过了一些显而易见的东西,任何帮助都将不胜感激在Java中按逆字母顺序对字符串数组排序,java,Java,我的任务是将此代码转换为反向排序,但我一辈子都不知道该怎么做。这些是我的排序、FindLarge和swap方法。我有一种感觉,我在这里错过了一些显而易见的东西,任何帮助都将不胜感激 public static void sort(String[] arr) { for (int pass = 1; pass < arr.length; pass++) { int largestPos = findLargest(arr
public static void sort(String[] arr)
{
for (int pass = 1; pass < arr.length; pass++)
{
int largestPos = findLargest(arr, arr.length - pass);
if (largestPos != arr.length - pass)
{
swap(arr, largestPos, arr.length - pass);
}
}
}
public static int findLargest(String[] arr, int num)
{
int largestPos = 0;
for (int i = 1; i <= num; i++)
{
if (arr[i].compareToIgnoreCase(arr[largestPos]) > 0)
{
largestPos = i;
}
}
return largestPos;
}
public static void swap(String[] arr, int first, int second)
{
String temp = arr[first];
arr[first] = arr[second];
arr[second] = temp;
}
}
公共静态无效排序(字符串[]arr)
{
对于(int pass=1;pass
您可以使用数组.排序(arr)
按字母顺序排序
然后把它倒过来 你能把findLargest转到findsmalest吗,就像这样:
public static void sort(String[] arr) {
for (int pass = 1; pass < arr.length; pass++) {
int largestPos = findSmallest(arr, arr.length - pass);
if (largestPos != arr.length - pass) {
swap(arr, largestPos, arr.length - pass);
}
}
}
public static int findSmallest(String[] arr, int num) {
int largestPos = 0;
for (int i = 1; i <= num; i++) {
if (arr[i].compareToIgnoreCase(arr[largestPos]) < 0) {
largestPos = i;
}
}
return largestPos;
}
public static void swap(String[] arr, int first, int second) {
String temp = arr[first];
arr[first] = arr[second];
arr[second] = temp;
}
公共静态无效排序(字符串[]arr){
对于(int pass=1;passpublicstaticvoidsort(String[]arr){
数组。排序(arr);
for(inti=0;i,只是Arrays.sort(arr,Collections.reverseOrder());
我认为这是您需要的(如果您不考虑集合框架的话)
不要重新发明轮子-
String[] strs = {"a", "b", "d", "c", "e"};
Arrays.sort(strs, Collections.reverseOrder(String.CASE_INSENSITIVE_ORDER));
System.out.println(Arrays.toString(strs));
[e、d、c、b、a]
A.R.S.答复的后续行动:
如果允许使用Arrays.Sort方法,则可以使用自定义比较器
Arrays.sort(stringArray, new Comparator<String>() {
@Override
public int compare(String t, String t1) {
return -t.compareToIgnoreCase(t1); //reverse the comparison, while ignoring case
}
});
Arrays.sort(stringArray,new Comparator(){
@凌驾
公共整数比较(字符串t、字符串t1){
return-t.compareToIgnoreCase(t1);//在忽略大小写的情况下反转比较
}
});
因此,首先我们需要创建字符串数组,然后使用数组。sort(String[]);
,然后使用for
将数组的排序倒序
import java.util.Arrays;
public class SortClass {
public static void main(String[] args) {
String[] arrayString = new String[5];
arrayString[0] = "Cat";
arrayString[1] = "Apple";
arrayString[2] = "Dog";
arrayString[3] = "Mouse";
arrayString[4] = "kitchen";
Arrays.sort(arrayString);
String[] arrReverse = new String[arrayString.length];
for (int i = arrayString.length - 1; i >= 0; i--) {
arrReverse[arrayString.length - 1 - i] = arrayString[i];
}
}
}
String arr[]=新字符串[];
字符串s;//输入字符串
整数计数=0;
对于(int i=0;i0){
int j=0;
while(j0)){
字符串温度=arr[i];
arr[i]=arr[j];
arr[j]=温度;
}
j++;
}
i++;
计数--;
}
对于(i=0;i允许使用集合和ArrayList吗?只是一个小注释:Java中的数组以索引0开始,而不是1。@str OP不必检查arr[0]>arr[0]
;在索引1开始检查是可以的。(这与任务相反)。使用两个参数Arrays.sort和passCollections.reverseOrder()
作为比较器。这似乎是最优雅的,但我注意到代码希望比较忽略大小写的字符串。因此,您需要一个自定义比较器,而不是Collections.reverseOrder()。@bowmore您可以使用Collections.reverseOrder(String.case\u Responsible\u ORDER)
为此,无需实现自定义子字符串。这用于从给定字符串生成子字符串,然后按降序对它们进行排序,以便可以更改循环以获得自己的子字符串
cbc
bac
abc
String[] strs = {"a", "b", "d", "c", "e"};
Arrays.sort(strs, Collections.reverseOrder(String.CASE_INSENSITIVE_ORDER));
System.out.println(Arrays.toString(strs));
[e, d, c, b, a]
Arrays.sort(stringArray, new Comparator<String>() {
@Override
public int compare(String t, String t1) {
return -t.compareToIgnoreCase(t1); //reverse the comparison, while ignoring case
}
});
import java.util.Arrays;
public class SortClass {
public static void main(String[] args) {
String[] arrayString = new String[5];
arrayString[0] = "Cat";
arrayString[1] = "Apple";
arrayString[2] = "Dog";
arrayString[3] = "Mouse";
arrayString[4] = "kitchen";
Arrays.sort(arrayString);
String[] arrReverse = new String[arrayString.length];
for (int i = arrayString.length - 1; i >= 0; i--) {
arrReverse[arrayString.length - 1 - i] = arrayString[i];
}
}
}
String arr[]= new String[];
String s; //input string
int count=0;
for(int i=0;i<=s.length()-k;i++){
arr[i]=s.substring(i,i+k); //using substring method
count++;
}
int i=0;
int b=count;
while(count>0){
int j=0;
while(j<b){
if((arr[i].compareTo(arr[j])>0)){
String temp= arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
j++;
}
i++;
count--;
}
for(i=0;i<b;i++)
System.out.println(arr[i]);