我對如何使用以下條件對該陣列進行排序有點困惑:
int[] array = { 3, 15, 7, 11, 6, 4, 1, 8, 10, 13 };
條件如下:
- 最大的整數是第一個
- 第二大整數是最后一個
- 第三大整數應該是第二個
- 該模式繼續,將最小的數字留在中間。
例如,如果起始陣列是 {1, 2, 3, 4, 5, 6, 7},那么排序后的陣列應該是 {7, 5, 3, 1, 2, 4, 6}。
有什么幫助嗎?我是排序演算法的新手,所以我仍在試圖弄清楚我應該自己完成這樣的事情的邏輯。提前致謝!
uj5u.com熱心網友回復:
也許這個解決方案復制陣列太多次,但它有效。
package at.ylz.playground;
import java.util.Arrays;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
// int[] array = {3, 15, 7, 11, 6, 4, 1, 8, 10, 13};
int[] array = {1, 2, 3, 4, 5, 6, 7};
var sortedArray = Arrays.stream(array).boxed().sorted(Collections.reverseOrder()).mapToInt(value -> value).toArray();
int n = array.length;
int[] res = new int[n];
int left = 0, right = n-1;
while (left <= right) {
res[left] = sortedArray[left*2];
if(left*2 1<n)
res[right] = sortedArray[left*2 1];
left ;
right--;
}
for (int i : res) System.out.println(i);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/437397.html
上一篇:使用正則運算式的搜索和替換方法
