我了解如何按升序和降序对 array
进行排序,但我正在尝试创建一个特定的模式。例如,我有一个随机顺序的 array
。我将如何在模式中对这个 array
进行排序? “最小、最大、第二小、第二大、第三小、第三大……”等等。有什么想法吗?
int[] pattern = {8, 6, 1, 2, 3, 80, 56};
//这是开始
public class Test2 {
public static void main(String[] args) {
int[] array = {1,4,2,6,9,3,65,77,33,22};
for (int i = 0; i < array.length; i++) {
System.out.print(" " + array[i]);
}
wackySort(array);
}
//This sorts the array
public static void wackySort(int[] nums) {
int sign = 0;
int temp = 0;
int temp2 = 0;
for (int i = 0; i < nums.length; i++) {
for (int j = 0; j < nums.length -1; j++) {
if (nums[j] > nums[j+1]) {
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
System.out.println();
int firstPointer = 0;
int secondPointer = nums.length -1;
int[] newarray = new int[nums.length];
for (int i = 0; i < nums.length; i+=2) {
newarray[i] = nums[firstPointer++];
newarray[i] = nums[secondPointer--];
}
for (int i = 0; i < newarray.length; i++) {
System.out.print(" " + newarray[i]);
}
}
}
最佳答案
看起来像是作业。这么简单的提示
第一步:对数组进行升序排序
{1, 2, 3, 6, 8, 56, 80};
第 2 步:分配一个相同大小的新数组
step 3 遍历第一个数组,两个计数器。一个点在最开始,另一个点在最后。现在在新数组中分配第一个计数器的数据,然后将计数器增加一个。接下来分配最后一个计数器的数据并将其减一。
int firstPointer = 0;
int secondPointer = nums.length - 1;
int[] newarray = new int[nums.length];
int i = 0;
for (i = 0; i < nums.length-1; i += 2) {
newarray[i] = nums[firstPointer++];
newarray[i+1] = nums[secondPointer--];
}
if(i<nums.length-1)
newarray[i] = nums[firstPointer++];
关于Java:操作数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17416950/