第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

增加或減少數(shù)組中的序列

增加或減少數(shù)組中的序列

哆啦的時光機 2023-01-05 16:44:45
我有一個元素數(shù)組需要根據(jù)以下規(guī)則打印出來:ai1 <= ai2 >= ai3 <= ai4 >= ai5 <= ai6輸入列表=30、12、49、6、10、50、13預期輸出 = [10, 6, 30, 12, 49, 13, 50]請建議我解決這個問題的方法。這是我嘗試過的。      Arrays.sort(arr);        for(i=2;i<n;i++)        {            if(i%2==0)            {                int temp =arr[i-1];                arr[i-1]=arr[i];                arr[i] = temp;            }        }        System.out.println("\n");        for(i=0;i<n;i++)還幫助我找到給定方法的時間復雜度和空間復雜度。
查看完整描述

4 回答

?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

規(guī)則似乎是奇數(shù)索引 (1, 3, 5, ...) 處的值必須大于相鄰索引處的值,例如,索引 5 處的值必須大于索引 4 和 6 處的值。


實現(xiàn)此目的的最簡單方法是將最小值放在偶數(shù)索引處,將最大值放在奇數(shù)索引處。要將值拆分為最小值和最大值,請先對值進行排序。


例子:


Input:    1,4,7,9,1,3,5,10,11


Sorted:   1,1,3,4,5,7,9,10,11

          └───────┘ └───────┘

          smallest   largest


            ↓   ↓   ↓    ↓     Odd indexes

Result:   1,7,1,9,3,10,4,11,5

          ↑   ↑   ↑    ↑    ↑  Even indexes

這樣做可以確保解決方案是正確的,假設解決方案是可能的。例如,如果輸入是1,1,1,1,2,2,2,您仍然會得到有效的解決方案 ( 1,2,1,2,1,2,1),而簡單的相鄰值交換則不會。


我會將編碼作為練習留給您完成。


查看完整回答
反對 回復 2023-01-05
?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

我知道您的問題有多個有效輸出,但我有同樣的想法 @shuki avraham 提到了并且 @Andreas 詳細解釋了它。


所以你對它進行排序,然后在數(shù)組中寫入最小的然后是最大的數(shù)字,依此類推。這是你如何做的:


Arrays.sort(arr); 


for(int i = 0; i < n / 2; i++) {

    System.out.print(arr[i] + " " + arr[n-i-1] + " ");

}


if(n % 2 == 1) System.out.print(arr[i]);


查看完整回答
反對 回復 2023-01-05
?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

  1. 按升序對數(shù)組進行排序。

  2. 對于每個偶數(shù)索引,從 i=2 開始,交換a[i]a[i-1]

  3. 時間和空間復雜度與排序相同


查看完整回答
反對 回復 2023-01-05
?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

像這樣的事情可以解決目的:


 int[] x = {1, 2, 3, 4, 5, 7, 9, 12, 10, 11, 6, 0};

        //sort asc

        Arrays.sort(x);


        //swap at alternate, take care of odd/even length array

        for (int i = 0; i < x.length - 2;) {

            int temp = x[i + 1];

            x[i + 1] = x[i + 2];

            x[i + 2] = temp;

            i += 2;

            if (i >= x.length) {

                i--;

            }

        }

        System.out.println(Arrays.toString(x));


查看完整回答
反對 回復 2023-01-05
  • 4 回答
  • 0 關注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號