01 演算法設計(二)

2021-08-10 18:28:56 字數 970 閱讀 5196

/**

* 題設:現在有0-99,共計100個整數,各不相同,將所有數放入乙個陣列,隨機排布,

* 陣列長度100,將裡面任意乙個數字替換成0-99的另乙個數字(唯一重複的數字)

* 問題:將這個重複的數字找出來

*/

同樣的這段**, 也可以解決01.演算法設計(一)的問題。

package test6;

import org.junit.test;

public

class

test6

//隨機打亂陣列的排列順序100次。

for(int i=0;i<100;i++)

//將其中的乙個數,替換成另乙個

int n1 = (int) (math.random()*100);

int n2 = (int) (math.random()*100);

if(n1==n2)

arr[n1] = arr[n2];

//檢視我們題目的陣列是什麼樣的

for(int i=0;i",");

}/**

* 使用方案一,同樣可以解決

*//** * 方案二:建立乙個輔助的陣列空間(相同長度),裡面元素全都是0

* 2.遍歷原始陣列,使用裡面的陣列作為新陣列的下標,進行自加

* 如果出現多次 那麼值,肯定》1

*///由於用的是陣列,陣列是需要消耗記憶體空間的,所以,這種方式,加快了速度, 但是消耗了記憶體

int newarr = new

int[100];

for(int i=0;iif(newarr[arr[i]]>1)}}

}

下面是原理圖:

01 演算法設計(一)

演算法主要注意以下兩點 執行時間 記憶體消耗 下面是第乙個小演算法 package test import org.junit.test public class demotest arr 100 69 2.把資料打亂,隨機排列一下 for int i 0 i 111 i 測試一下我們組裝的資料 f...

演算法第二週作業01

在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。對於左上角的元素 array i j 其中 i 0 j array 0 length 它下方的數值都比它大 就是說它所在列中是最大的 ...

硬體設計之二 訊號設計01 DDR設計

在目前的處理器架構中,ddr是必不可少的一部分。毫無疑問,ddr部分是系統高速訊號中最重要的部分。本文分為2部分,一部分是對於訊號處理的規則,另一部分是一些注意事項。這部分的設計以硬體設計指導為參考。大部分的soc廠商都會在這裡給出明確的規則說明,比如intel,amd,安霸,ti等。也有少部分so...