gpt4 book ai didi

java - 如何在不使用 Array.sort :Java 的情况下按字母顺序对数组进行排序

转载 作者:行者123 更新时间:2023-11-29 04:52:24 26 4
gpt4 key购买 nike

我想在 Java 中按字母顺序对数组的值进行排序。我无法再次遍历数组并获取输出。我的意图是: 遍历单词数组, 找到最大的字符串(按字典顺序), 找到后,将单词插入到 sortedWords 数组的末尾, 将 sortedArray 的索引向左移动一位, 通过删除已经找到的单词来减少原始数组, 再次循环查找下一个单词....

感谢您的帮助。

以下是我到目前为止所做的。

公共(public)课主要{

public static void main(String[] args) {
String[] words = {"bob","alice","keith","zoe","sarah","gary"};
String[] sortedWords = new String[words.length];

// Copy of the original array
for(int i = 0; i < sortedWords.length;i++){
sortedWords[i]= words[i];
}


for (int i = 0; i < words.length - 1; i++) {
int currentSize = words.length;
int position = 0;
boolean found = false;
while (position < currentSize && !found) {
if (words[i].equals(largestAlphabetically(words))) {
found = true;

} else {
position++;
}
}

if(found){
insertAtEnd(words,largestAlphabetically(words));
shiftLeft(sortedWords,i);
shorterArray(words);

}

}
for(int i = 0;i < sortedWords.length;i++){
System.out.println(sortedWords[i]);
}

}


/**
* This method inserts the largest string lexicographically at the end of the array
* @param words
* @param wordToInsert
* @return an array with string at the end
*/

public static String [] insertAtEnd(String[] words, String wordToInsert) {

for (int i = 0; i < words.length; i++) {
int currentSize = words.length - 1;
wordToInsert = largestAlphabetically(words);
if (currentSize < words.length) {
currentSize++;
words[currentSize - 1] = wordToInsert;
}
}
return words;
}

/**
* This method determines the largest string in an array
* @param words
* @return largest string lexicographically
*/
public static String largestAlphabetically(String[] words) {
String searchedValue = words[0];
for (int i = 0; i < words.length; i++) {

for (int j = 0; j < words.length; j++) {
if (words[i].compareToIgnoreCase(words[j]) < 0) {
searchedValue = words[j];
}
}
}
return searchedValue;
}

/**
* To shift the array index to the left
* @param dest
* @param from
*/

public static void shiftLeft(String[] dest, int from) {
for (int i = from + 1; i < dest.length; i++) {
dest[i - 1] = dest[i];
}
dest[dest.length - 1] = dest[0];
}

/**
* Remove the largest word from a string while maintaining the order of the array
* @param words
* @return return a shorter array
*/
public static String [] shorterArray(String[] words) {
String [] shorterArray = new String[words.length];
int currentSize = words.length;
String searchedValue = largestAlphabetically(words);
int position = 0;
boolean found = false;
while (position < currentSize && !found) {
if (words[position] == searchedValue) {
found = true;

} else {
position++;
}
}
if (found) {
for (int i = position + 1; i < currentSize; i++) {
words[i - 1] = words[i];

}
currentSize--;
shorterArray = words;
}

return shorterArray;

}

最佳答案

简单的实现可以是这样的:

String[] words = {"bob","alice","keith","zoe","sarah","gary"};

boolean isSwapped = false;
do {
isSwapped = false;
for(int i=0;i<words.length-1;i++){
if(words[i].compareTo(words[i+1])>0){
String temp = words[i+1];
words[i+1] = words[i];
words[i] = temp;
isSwapped = true;
}
}
}while((isSwapped));

关于java - 如何在不使用 Array.sort :Java 的情况下按字母顺序对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34941422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com