Java 我需要你的帮助
字符串数组当前按奇数索引和偶数索引排序 例如,让这个数组可视化我的意思:{a,c,e,b,d,f}。(索引0,2,4,1,3,5)。 我试图将数组重新排序为{a,b,c,d,e,f}。(索引0、1、2、3、4、5) 它也必须适用于奇数的array.length。例:{a,c,e,g,b,d,f}-->{a,b,c,d,e,f,g}长度=7 此外,我试图关注索引,而不是字符串的实际内容,因为在我的程序中,它们不仅仅是abc或按字母顺序排序Java 我需要你的帮助,java,arrays,Java,Arrays,字符串数组当前按奇数索引和偶数索引排序 例如,让这个数组可视化我的意思:{a,c,e,b,d,f}。(索引0,2,4,1,3,5)。 我试图将数组重新排序为{a,b,c,d,e,f}。(索引0、1、2、3、4、5) 它也必须适用于奇数的array.length。例:{a,c,e,g,b,d,f}-->{a,b,c,d,e,f,g}长度=7 此外,我试图关注索引,而不是字符串的实际内容,因为在我的程序中,它们不仅仅是abc或按字母顺序排序 我真的需要一些帮助,因为我不擅长排序算法。时间复杂度对我来
我真的需要一些帮助,因为我不擅长排序算法。时间复杂度对我来说并不重要。创建一个长度相同的数组,然后使用两个计数器在两个过程中复制:
for (idst=0, isrc=0; idst<length; idst+=2, isrc+=1) dst[idst] = src[isrc];
for (idst=1, isrc=length/2; idst<length; idst+=2, isrc+=1) dst[idst] = src[isrc];
for(idst=0,isrc=0;idst我不确定您使用的是哪种语言,因此我将用Java编写它,以便简化为其他语言
//import java.util.Arrays;
public static String[] unscramble(String[] scrambledStrArr){
String[] unscramble = new String[scrambledStrArr.length];
String[] evens = Arrays.copyOfRange(scrambledStrArr, 0, scrambledStrArr.length/2); // note that we can use int truncation here to our benefit
String[] odds = Arrays.copyOfRange(scrambledStrArr, (scrambledStrArr.length/2)+1, scrambledStrArr.length);
int evensIndex = 0, oddsIndex = 0;
for(int i = 0; i < unscramble.length; i++;){
if(i%2==0){
unscramble[i] = evens[evensIndex];
evensIndex++;
} else {
unscramble[i] = evens[oddsIndex];
oddsIndex++;
}
}
}
//导入java.util.array;
公共静态字符串[]解读(字符串[]scrambledStrArr){
字符串[]解译=新字符串[scrambledStrArr.length];
String[]evens=Arrays.copyOfRange(scrambledStrArr,0,scrambledStrArr.length/2);//注意,我们可以在这里使用int截断,这对我们有利
String[]赔率=Arrays.copyOfRange(scrambledStrArr,(scrambledStrArr.length/2)+1,scrambledStrArr.length);
int evensIndex=0,oddsIndex=0;
for(int i=0;i
请注意,确实有更有效的方法可以做到这一点(请看aksommerville的答案),但这可能是最容易阅读的方法。很好,谢谢你的帮助!!你的代码几乎解决了问题,但你告诉我如何调整它使其正确工作。我非常感谢!PS:我在java中工作。