Board logo

標題: [操作疑難] 新手學JAVA, 睇書題目唔明有野問(array) [打印本頁]

作者: 刀仔刀刀神    時間: 2013-10-16 21:24     標題: 新手學JAVA, 睇書題目唔明有野問(array)

小弟剛剛學JAVA, 睇書想試下做佢後面D exercise, 唔係好知問咩

public void expand(Object a) {
// assume element has enough capacity
for (int i = size - 1; i >= 0; i--) {
element[4 * i + 3] = a;
element[4 * i + 2] = a;
element[4 * i + 1] = a;
element[4 * i] = element[i];
}
size = 4 * size;
}

element is a one-dimensional array that stores elements of the type Object. The data member size is such that the list elements are in positions 0 through size-1 of the array.

Question :
If the list element[0:2] = [9, 8, 7], whose size is 3, write the result and the size of the array element after executing
      expand(new Integer(18))
Assume that the array element has enough capacity for expansion.

同埋想問問個programme應該係點run? 小弟唔識答求教
作者: hkguile    時間: 2013-10-16 21:32

提示: 作者被禁止或刪除 內容自動屏蔽
作者: rabbit82047    時間: 2013-10-17 00:07

本帖最後由 rabbit82047 於 2013-10-17 00:09 編輯

條題目唔太難, 試下解, 可能仲難明

有條 array index 0 ~ 2 既值係 [9,8,7], size 係 3 < 呢個唔係 array 既實際 length
因為題目假設左 array 有足夠 capacity 做 expand
所以你可以當 size 係 limiting factor

題目就係要你 dry run 一次 expand(new Integer(18))
列出 expand 之後既 array index 0~size-1 所有數值同 [size]
作者: 刀仔刀刀神    時間: 2013-10-17 00:34

我想問 size of array element係咪12,
expand (new Integer(18))  入面既數值有咩用
同埋我唔係好知條program應該點run
個flow應該係點?
作者: 刀仔刀刀神    時間: 2013-10-17 00:35

條題目唔太難, 試下解, 可能仲難明

有條 array index 0 ~ 2 既值係 [9,8,7], size 係 3 < 呢個唔係 ...
rabbit82047 發表於 2013-10-17 00:07



    請問聲execute個flow應該係點
作者: terrykk    時間: 2013-10-17 00:41

e d 要落手落腳post,幾可見化化哥浪費時間出手
作者: rabbit82047    時間: 2013-10-17 00:51

本帖最後由 rabbit82047 於 2013-10-17 01:01 編輯

回復 5# 刀仔刀刀神


Flow 咪就係上至下有 loop 就 loop

其實你攞紙筆出黎 mark 低所有 variable 既值, array, i, size
一步步咁做,自然就有答案,完左再寫個 program 出黎驗證就得

expand(new Integer(18)) < 就係 create 一個 Integer object 值係 18 再 pass 入去 expand

其實你學到邊, 寫過 hello world 未?
知唔知 method, parameter, primitive data type, object 係咩意思?

要訓,聽日先會睇返
作者: 刀仔刀刀神    時間: 2013-10-17 01:14

[11] = 18
[10] = 18
[9] = 18
[8] = 7
[7] = 18
[6] = 18
[5] = 18
[4] = 8
[3] = 18
[2] = 18
[1] = 18
[0] = 9

點解我整到呢堆野出黎
作者: rabbit82047    時間: 2013-10-17 07:50

本帖最後由 rabbit82047 於 2013-10-17 08:02 編輯

既然你已經有答案, 試下 run 下面個 class
  1. import java.util.Arrays;

  2. public class Example {
  3.         private Object[] element;
  4.         private int size;
  5.        
  6.         public Example() {
  7.                 element = new Object[12];
  8.                 element[0] = new Integer(9);
  9.                 element[1] = new Integer(8);
  10.                 element[2] = new Integer(7);
  11.                
  12.                 size = 3;
  13.         }
  14.        
  15.         public void printArray() {
  16.                 System.out.printf("Current size is %d\nArray content: %s", size, Arrays.toString(element));
  17.         }
  18.        
  19.         public void expand(Object a) {
  20.                 // assume element has enough capacity
  21.                 for (int i = size - 1; i >= 0; i--) {
  22.                         element[4 * i + 3] = a;
  23.                         element[4 * i + 2] = a;
  24.                         element[4 * i + 1] = a;
  25.                         element[4 * i] = element[i];
  26.                 }
  27.                 size = 4 * size;
  28.         }
  29.        
  30.         public static void main(String[] args) {
  31.                 Example example = new Example();
  32.                
  33.                 example.expand(new Integer(18));
  34.                
  35.                 example.printArray();
  36.         }
  37. }
複製代碼

作者: 刀仔刀刀神    時間: 2013-10-17 08:31

既然你已經有答案, 試下 run 下面個 class


THANK YOU!! 我走去問人, 人地仲話個SIZE 冇可能係12..
但係其實第28行句 size =4 *size;
有咩作用??
作者: rabbit82047    時間: 2013-10-17 13:43

THANK YOU!! 我走去問人, 人地仲話個SIZE 冇可能係12..
但係其實第28行句 size =4 *size;
有咩作用?? ...
刀仔刀刀神 發表於 2013-10-17 08:31


expand method 做既野就係
將 element 既 accessible size * 4
原有既 member value 按比例 spread  開
中間多出黎既 member 用 pass in value 填充
size = 4 * size 就係要將 accessible size 放大

正常 expand array 仲要 check capacity 夠唔夠,
不過一條練習題唔講咁多啦
作者: 刀仔刀刀神    時間: 2013-10-17 14:40

多謝大佬既解答, 幫左我好多

另外小弟唔多明點計time complexity,
如果以呢條為例,
應該點計?? (big-O果隻)
作者: rabbit82047    時間: 2013-10-17 19:49

本帖最後由 rabbit82047 於 2013-10-17 19:53 編輯

回復 12# 刀仔刀刀神

Time complexity 你 google 可能好d, 做野之後都唔會去計, 佢話係 O(n) 就 O(n), O(log n) 就 O(log n)

以 expand 黎講
  1. for (int i = n; i >= 0; i--) {
  2.         element[4 * i + 3] = a; // run n times
  3.         element[4 * i + 2] = a; // run n times
  4.         element[4 * i + 1] = a; // run n times
  5.         element[4 * i] = element[i]; // run n times
  6. }
  7. size = 4 * size; // run once
複製代碼
結果 total 有 4n+1 個 operation, time complexity 就係 O(n) linear time

O(n^2) example - (n^2 - n) / 2
  1. for (int i = 0; i < N; i++) {
  2.         for (int j = 0; j < i; j++) {
  3.                 statements
  4.         }
  5. }
複製代碼
O(log n) example - 2^x = n = log2(2^x) = log2(n)
  1. for (int i = 1; i < N; i *= 2) {
  2.         statements
  3. }
複製代碼
如果有 if else 仲要計 worst/best case, 係咁多, 其他要重新學返
作者: 刀仔刀刀神    時間: 2013-10-17 22:54

回復  刀仔刀刀神

Time complexity 你 google 可能好d, 做野之後都唔會去計, 佢話係 O(n) 就 O(n), O(log ...
rabbit82047 發表於 2013-10-17 19:49



   要計真係唔好講笑....
睇到我呢...

師兄熟唔熟bubble sort ?? 我又遇到問題
作者: tuyylihk    時間: 2013-10-18 09:56

而家呢度有幾條友剩識係度用d同程式完全無關既野係度串人
但實情完全無料,唔識答野
樓主可以唔駛理

練習題通常係比你熟悉個flow同幫你做解釋多於實際用途
呢條例題係比你容易理解,實際做冇乜理由咁搞法

sorting網上應該好多例子同埋圖解,尤其bubble sort係好基本既排序法...
你有咩問題?
作者: Flower    時間: 2013-10-18 10:17

提示: 作者被禁止或刪除 內容自動屏蔽
作者: tuyylihk    時間: 2013-10-18 10:18

我唔係喎CHING 兄, 我真係去IBM SEARCH 咗野來學喎。
Flower 發表於 2013-10-18 10:17

妖,明知唔係講緊你咪插埋黎啦
作者: rabbit82047    時間: 2013-10-18 13:47

回復 14# 刀仔刀刀神


bubble sort algorithm 上網 search 就有好多 implementation 同教學

有咩唔清楚, 係度 post 出黎, 自然有 ching 答你
作者: 杜龍    時間: 2013-10-18 15:39

其實化化哥可能同小弟一樣, 上左做SA之後無晒時間寫曲. 搞到甩甩地. 吹水多過DUP石仔.
作者: Flower    時間: 2013-10-18 16:28

提示: 作者被禁止或刪除 內容自動屏蔽
作者: 刀仔刀刀神    時間: 2013-10-19 00:02

唔該哂樓上幾位,
我D疑難已SOLVED
THANK YOU!!
作者: H0_    時間: 2013-10-21 22:16

Data Structure
作者: hkxweb    時間: 2013-10-22 11:15

功課就功課啦,扮咩書既問題
作者: Flower    時間: 2013-10-22 11:21

提示: 作者被禁止或刪除 內容自動屏蔽
作者: hkxweb    時間: 2013-10-22 11:51

一早就知。。

    亞SIR 用 Introduction to Java Programming 定 Java How to Program 書? ...
Flower 發表於 2013-10-22 11:21



    睇落去似係Data Structures
作者: Flower    時間: 2013-10-22 11:54

提示: 作者被禁止或刪除 內容自動屏蔽





歡迎光臨 電腦領域 HKEPC Hardware (https://h0.hkepc.com/forum/) Powered by Discuz! 7.2