Java 我需要你的帮助

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或按字母顺序排序 我真的需要一些帮助,因为我不擅长排序算法。时间复杂度对我来

字符串数组当前按奇数索引和偶数索引排序

例如,让这个数组可视化我的意思:{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中工作。