ਐਰੇ (ਡਾਟਾ ਬਣਤਰ)
ਕੰਪਿਊਟਰ ਵਿਗਿਆਨ ਵਿੱਚ, ਇੱਕ ਐਰੇ ਇੱਕ ਡਾਟਾ ਢਾਂਚਾ ਹੈ ਜਿਸ ਵਿੱਚ ਤੱਤ (ਮੁੱਲ ਜਾਂ ਵੇਰੀਏਬਲ) ਦਾ ਸੰਗ੍ਰਹਿ ਹੁੰਦਾ ਹੈ, ਸਮਾਨ ਮੈਮੋਰੀ ਆਕਾਰ ਦਾ, ਹਰੇਕ ਦੀ ਪਛਾਣ ਘੱਟੋ-ਘੱਟ ਇੱਕ ਐਰੇ ਸੂਚਕਾਂਕ ਜਾਂ ਕੁੰਜੀ ਦੁਆਰਾ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇੱਕ ਐਰੇ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਸਟੋਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਕਿ ਹਰੇਕ ਤੱਤ ਦੀ ਸਥਿਤੀ ਨੂੰ ਇਸਦੇ ਸੂਚਕਾਂਕ ਟੂਪਲ ਤੋਂ ਇੱਕ ਗਣਿਤਿਕ ਫਾਰਮੂਲੇ ਦੁਆਰਾ ਗਿਣਿਆ ਜਾ ਸਕਦਾ ਹੈ।[1] [2] [3] ਸਭ ਤੋਂ ਸਰਲ ਕਿਸਮ ਦਾ ਡਾਟਾ ਬਣਤਰ ਇੱਕ ਲੀਨੀਅਰ ਐਰੇ ਹੈ, ਜਿਸਨੂੰ ਇੱਕ-ਅਯਾਮੀ ਐਰੇ ਵੀ ਕਿਹਾ ਜਾਂਦਾ ਹੈ।
ਉਦਾਹਰਨ ਲਈ, ਦਸ 32-ਬਿੱਟ (4-ਬਾਈਟ) ਪੂਰਨ ਅੰਕ ਵੇਰੀਏਬਲ ਦੀ ਇੱਕ ਐਰੇ, ਸੂਚਕਾਂਕ 0 ਤੋਂ 9 ਦੇ ਨਾਲ, ਮੈਮੋਰੀ ਐਡਰੈੱਸ 2000, 2004, 2008, ..., 2036, ( ਹੈਕਸਾਡੈਸੀਮਲ ਵਿੱਚ: 0x7D0 ਵਿੱਚ ਦਸ ਸ਼ਬਦਾਂ ਵਜੋਂ ਸਟੋਰ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। , 0x7D4, 0x7D8, ..., 0x7F4) ਤਾਂ ਕਿ ਸੂਚਕਾਂਕ i ਵਾਲੇ ਤੱਤ ਦਾ ਪਤਾ 2000 + (i × 4) [4] ਹੋਵੇ। ਇੱਕ ਐਰੇ ਦੇ ਪਹਿਲੇ ਤੱਤ ਦੇ ਮੈਮੋਰੀ ਐਡਰੈੱਸ ਨੂੰ ਪਹਿਲਾ ਐਡਰੈੱਸ, ਫਾਊਂਡੇਸ਼ਨ ਐਡਰੈੱਸ, ਜਾਂ ਬੇਸ ਐਡਰੈੱਸ ਕਿਹਾ ਜਾਂਦਾ ਹੈ।
ਕਿਉਂਕਿ ਇੱਕ ਮੈਟ੍ਰਿਕਸ ਦੀ ਗਣਿਤਿਕ ਧਾਰਨਾ ਨੂੰ ਦੋ-ਅਯਾਮੀ ਗਰਿੱਡ ਵਜੋਂ ਦਰਸਾਇਆ ਜਾ ਸਕਦਾ ਹੈ, ਦੋ-ਅਯਾਮੀ ਐਰੇ ਨੂੰ ਕਈ ਵਾਰ "ਮੈਟ੍ਰਿਕਸ" ਵੀ ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਕੁਝ ਮਾਮਲਿਆਂ ਵਿੱਚ "ਵੈਕਟਰ" ਸ਼ਬਦ ਦੀ ਵਰਤੋਂ ਇੱਕ ਐਰੇ ਦਾ ਹਵਾਲਾ ਦੇਣ ਲਈ ਕੰਪਿਊਟਿੰਗ ਵਿੱਚ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਹਾਲਾਂਕਿ ਵੈਕਟਰਾਂ ਦੀ ਬਜਾਏ ਟੂਪਲਜ਼ ਗਣਿਤਿਕ ਤੌਰ 'ਤੇ ਵਧੇਰੇ ਸਹੀ ਬਰਾਬਰ ਹੁੰਦੇ ਹਨ। ਟੇਬਲਾਂ ਨੂੰ ਅਕਸਰ ਐਰੇ ਦੇ ਰੂਪ ਵਿੱਚ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਖਾਸ ਕਰਕੇ ਲੁੱਕਅੱਪ ਟੇਬਲ; ਸ਼ਬਦ "ਸਾਰਣੀ" ਨੂੰ ਕਈ ਵਾਰ ਐਰੇ ਦੇ ਸਮਾਨਾਰਥੀ ਵਜੋਂ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
ਐਰੇ ਸਭ ਤੋਂ ਪੁਰਾਣੇ ਅਤੇ ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਡੇਟਾ ਢਾਂਚੇ ਵਿੱਚੋਂ ਹਨ, ਅਤੇ ਲਗਭਗ ਹਰ ਪ੍ਰੋਗਰਾਮ ਦੁਆਰਾ ਵਰਤੇ ਜਾਂਦੇ ਹਨ। ਇਹਨਾਂ ਦੀ ਵਰਤੋਂ ਕਈ ਹੋਰ ਡਾਟਾ ਢਾਂਚੇ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਵੀ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਸੂਚੀਆਂ ਅਤੇ ਸਤਰ। ਉਹ ਕੰਪਿਊਟਰਾਂ ਦੇ ਐਡਰੈਸਿੰਗ ਤਰਕ ਦਾ ਪ੍ਰਭਾਵਸ਼ਾ ਕਿਲੀ ਢੰਗ ਨਾਲ ਸ਼ੋਸ਼ਣ ਕਰਦੇ ਹਨ। ਜ਼ਿਆਦਾਤਰ ਆਧੁਨਿਕ ਕੰਪਿਊਟਰਾਂ ਅਤੇ ਕਈ ਬਾਹਰੀ ਸਟੋਰੇਜ ਡਿਵਾਈਸਾਂ ਵਿੱਚ, ਮੈਮੋਰੀ ਸ਼ਬਦਾਂ ਦੀ ਇੱਕ-ਅਯਾਮੀ ਲੜੀ ਹੁੰਦੀ ਹੈ, ਜਿਸਦੇ ਸੂਚਕਾਂਕ ਉਹਨਾਂ ਦੇ ਪਤੇ ਹੁੰਦੇ ਹਨ। ਪ੍ਰੋਸੈਸਰ, ਖਾਸ ਕਰਕੇ ਵੈਕਟਰ ਪ੍ਰੋਸੈਸਰ, ਅਕਸਰ ਐਰੇ ਓਪਰੇਸ਼ਨਾਂ ਲਈ ਅਨੁਕੂਲਿਤ ਹੁੰਦੇ ਹਨ।
ਐਰੇ ਜ਼ਿਆਦਾਤਰ ਲਾਭਦਾਇਕ ਹੁੰਦੇ ਹਨ ਕਿਉਂਕਿ ਐਲੀਮੈਂਟ ਸੂਚਕਾਂਕ ਦੀ ਰਨ ਟਾਈਮ 'ਤੇ ਗਣਨਾ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। ਹੋਰ ਚੀਜ਼ਾਂ ਦੇ ਨਾਲ, ਇਹ ਵਿਸ਼ੇਸ਼ਤਾ ਇੱਕ ਸਿੰਗਲ ਦੁਹਰਾਓ ਸਟੇਟਮੈਂਟ ਨੂੰ ਇੱਕ ਐਰੇ ਦੇ ਕਈ ਤੱਤਾਂ ਨੂੰ ਆਪਹੁਦਰੇ ਢੰਗ ਨਾਲ ਪ੍ਰਕਿਰਿਆ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ। ਇਸ ਕਾਰਨ ਕਰਕੇ, ਇੱਕ ਐਰੇ ਡੇਟਾ ਢਾਂਚੇ ਦੇ ਤੱਤਾਂ ਦਾ ਇੱਕੋ ਜਿਹਾ ਆਕਾਰ ਹੋਣਾ ਜ਼ਰੂਰੀ ਹੈ ਅਤੇ ਉਹੀ ਡੇਟਾ ਪ੍ਰਸਤੁਤੀ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ। ਵੈਧ ਸੂਚਕਾਂਕ ਟੂਪਲਾਂ ਦਾ ਸੈੱਟ ਅਤੇ ਐਲੀਮੈਂਟਸ ਦੇ ਐਡਰੈੱਸ (ਅਤੇ ਇਸਲਈ ਐਲੀਮੈਂਟ ਐਡਰੈਸਿੰਗ ਫਾਰਮੂਲਾ) ਆਮ ਤੌਰ 'ਤੇ, [3] [5]ਹਮੇਸ਼ਾ ਨਹੀਂ, [2] ਜਦੋਂ ਐਰੇ ਵਰਤੋਂ ਵਿੱਚ ਹੁੰਦਾ ਹੈ, ਫਿਕਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
ਸ਼ਬਦ "ਐਰੇ" ਇੱਕ ਐਰੇ ਡੇਟਾ ਕਿਸਮ ਦਾ ਹਵਾਲਾ ਵੀ ਦੇ ਸਕਦਾ ਹੈ, ਜ਼ਿਆਦਾਤਰ ਉੱਚ-ਪੱਧਰੀ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਦੁਆਰਾ ਪ੍ਰਦਾਨ ਕੀਤੀ ਗਈ ਇੱਕ ਕਿਸਮ ਦੀ ਡੇਟਾ ਕਿਸਮ ਜਿਸ ਵਿੱਚ ਮੁੱਲਾਂ ਜਾਂ ਵੇਰੀਏਬਲਾਂ ਦਾ ਸੰਗ੍ਰਹਿ ਹੁੰਦਾ ਹੈ ਜੋ ਰਨ-ਟਾਈਮ 'ਤੇ ਗਣਨਾ ਕੀਤੇ ਇੱਕ ਜਾਂ ਵੱਧ ਸੂਚਕਾਂਕ ਦੁਆਰਾ ਚੁਣਿਆ ਜਾ ਸਕਦਾ ਹੈ। . ਐਰੇ ਕਿਸਮਾਂ ਨੂੰ ਅਕਸਰ ਐਰੇ ਢਾਂਚੇ ਦੁਆਰਾ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ; ਹਾਲਾਂਕਿ, ਕੁਝ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਉਹਨਾਂ ਨੂੰ ਹੈਸ਼ ਟੇਬਲ, ਲਿੰਕਡ ਲਿਸਟਾਂ, ਸਰਚ ਟ੍ਰੀ, ਜਾਂ ਹੋਰ ਡਾਟਾ ਬਣਤਰ ਦੁਆਰਾ ਲਾਗੂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
ਇਹ ਸ਼ਬਦ ਵੀ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਐਲਗੋਰਿਦਮ ਦੇ ਵਰਣਨ ਵਿੱਚ, ਐਸੋਸੀਏਟਿਵ ਐਰੇ ਜਾਂ "ਐਬਸਟਰੈਕਟ ਐਰੇ", ਇੱਕ ਸਿਧਾਂਤਕ ਕੰਪਿਊਟਰ ਵਿਗਿਆਨ ਮਾਡਲ (ਇੱਕ ਐਬਸਟ੍ਰੈਕਟ ਡੇਟਾ ਕਿਸਮ ਜਾਂ ADT) ਦਾ ਮਤਲਬ ਐਰੇ ਦੀਆਂ ਜ਼ਰੂਰੀ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਹਾਸਲ ਕਰਨ ਲਈ ਹੈ।
ਇਤਿਹਾਸ
[ਸੋਧੋ]ਪਹਿਲੇ ਡਿਜੀਟਲ ਕੰਪਿਊਟਰਾਂ ਨੇ ਡਾਟਾ ਟੇਬਲ, ਵੈਕਟਰ ਅਤੇ ਮੈਟ੍ਰਿਕਸ ਕੰਪਿਊਟੇਸ਼ਨਾਂ ਅਤੇ ਹੋਰ ਕਈ ਉਦੇਸ਼ਾਂ ਲਈ ਐਰੇ ਢਾਂਚੇ ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਅਤੇ ਐਕਸੈਸ ਕਰਨ ਲਈ ਮਸ਼ੀਨ-ਲੈਂਗਵੇਜ ਪ੍ਰੋਗਰਾਮਿੰਗ ਦੀ ਵਰਤੋਂ ਕੀਤੀ। ਜੌਹਨ ਵਾਨ ਨਿਊਮੈਨ ਨੇ 1945 ਵਿੱਚ ਪਹਿਲੇ ਸਟੋਰ ਕੀਤੇ-ਪ੍ਰੋਗਰਾਮ ਕੰਪਿਊਟਰ ਦੀ ਉਸਾਰੀ ਦੇ ਦੌਰਾਨ ਪਹਿਲਾ ਐਰੇ-ਸੌਰਟਿੰਗ ਪ੍ਰੋਗਰਾਮ (ਅਭੇਦ ਛਾਂਟੀ) ਲਿਖਿਆ ਸੀ। [6]ਐਰੇ ਇੰਡੈਕਸਿੰਗ ਅਸਲ ਵਿੱਚ ਸਵੈ-ਸੋਧਣ ਵਾਲੇ ਕੋਡ ਦੁਆਰਾ ਕੀਤੀ ਗਈ ਸੀ, ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਇੰਡੈਕਸ ਰਜਿਸਟਰਾਂ ਅਤੇ ਅਸਿੱਧੇ ਐਡਰੈਸਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਕੇ। 1960 ਦੇ ਦਹਾਕੇ ਵਿੱਚ ਡਿਜ਼ਾਈਨ ਕੀਤੇ ਗਏ ਕੁਝ ਮੇਨਫ੍ਰੇਮ, ਜਿਵੇਂ ਕਿ ਬੁਰੋਜ਼ ਬੀ5000 ਅਤੇ ਇਸਦੇ ਉੱਤਰਾਧਿਕਾਰੀ, ਹਾਰਡਵੇਅਰ ਵਿੱਚ ਸੂਚਕਾਂਕ-ਸੀਮਾਵਾਂ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਮੈਮੋਰੀ ਸੈਗਮੈਂਟੇਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਨ। [7]
ਅਸੈਂਬਲੀ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਆਮ ਤੌਰ 'ਤੇ ਐਰੇ ਲਈ ਕੋਈ ਵਿਸ਼ੇਸ਼ ਸਮਰਥਨ ਨਹੀਂ ਹੁੰਦਾ, ਇਸ ਤੋਂ ਇਲਾਵਾ ਜੋ ਮਸ਼ੀਨ ਖੁਦ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ। ਸਭ ਤੋਂ ਪੁਰਾਣੀ ਉੱਚ-ਪੱਧਰੀ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ, ਜਿਸ ਵਿੱਚ FORTRAN (1957), Lisp (1958), COBOL (1960), ਅਤੇ ALGOL 60 (1960) ਸ਼ਾਮਲ ਹਨ, ਵਿੱਚ ਬਹੁ-ਆਯਾਮੀ ਐਰੇ ਲਈ ਸਮਰਥਨ ਸੀ, ਅਤੇ ਇਸੇ ਤਰ੍ਹਾਂ C (1972) ਵੀ ਹੈ। C++ (1983) ਵਿੱਚ, ਕਲਾਸ ਟੈਂਪਲੇਟ ਬਹੁ-ਆਯਾਮੀ ਐਰੇ ਲਈ ਮੌਜੂਦ ਹਨ ਜਿਨ੍ਹਾਂ ਦਾ ਆਯਾਮ ਰਨਟਾਈਮ [3] [5] ਦੇ ਨਾਲ-ਨਾਲ ਰਨਟਾਈਮ-ਲਚਕੀਲੇ ਐਰੇ ਲਈ ਫਿਕਸ ਕੀਤਾ ਗਿਆ ਹੈ।[2]
ਐਪਲੀਕੇਸ਼ਨਾਂ
[ਸੋਧੋ]ਐਰੇ ਦੀ ਵਰਤੋਂ ਗਣਿਤਿਕ ਵੈਕਟਰਾਂ ਅਤੇ ਮੈਟ੍ਰਿਕਸਾਂ ਦੇ ਨਾਲ-ਨਾਲ ਹੋਰ ਕਿਸਮ ਦੀਆਂ ਆਇਤਾਕਾਰ ਟੇਬਲਾਂ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਬਹੁਤ ਸਾਰੇ ਡੇਟਾਬੇਸ, ਛੋਟੇ ਅਤੇ ਵੱਡੇ, ਇੱਕ-ਅਯਾਮੀ ਐਰੇ ਦੇ ਹੁੰਦੇ ਹਨ (ਜਾਂ ਸ਼ਾਮਲ ਕਰਦੇ ਹਨ) ਜਿਨ੍ਹਾਂ ਦੇ ਤੱਤ ਰਿਕਾਰਡ ਹੁੰਦੇ ਹਨ।
ਐਰੇ ਦੀ ਵਰਤੋਂ ਹੋਰ ਡਾਟਾ ਢਾਂਚੇ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਸੂਚੀਆਂ, ਹੀਪਸ , ਹੈਸ਼ ਟੇਬਲ, ਡੀਕਿਊਜ਼, ਕਤਾਰਾਂ, ਸਟੈਕ, ਸਤਰ ਅਤੇ VLists.ਹੋਰ ਡੇਟਾ ਢਾਂਚੇ ਦੇ ਐਰੇ-ਅਧਾਰਿਤ ਸਥਾਪਨ ਅਕਸਰ ਸਧਾਰਨ ਅਤੇ ਸਪੇਸ-ਕੁਸ਼ਲ ( ਅੰਤਰਿਤ ਡੇਟਾ ਢਾਂਚੇ) ਹੁੰਦੇ ਹਨ, ਜਿਸ ਲਈ ਓਵਰ ਹੈੱਡ ਦੀ ਥੋੜ੍ਹੀ ਜਿਹੀ ਪੇਸ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਪਰ ਇਸ ਵਿੱਚ ਮਾੜੀ ਸਪੇਸ ਜਟਿਲਤਾ ਹੋ ਸਕਦੀ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਜਦੋਂ ਸੋਧਿਆ ਜਾਂਦਾ ਹੈ, ਟ੍ਰੀ-ਅਧਾਰਿਤ ਡੇਟਾ ਢਾਂਚੇ ਦੀ ਤੁਲਨਾ ਵਿੱਚ (ਇੱਕ ਲੜੀਬੱਧ ਐਰੇ ਦੀ ਤੁਲਨਾ ਕਰੋ ਇੱਕ ਖੋਜ ਰੁੱਖ)।
ਇੱਕ ਜਾਂ ਇੱਕ ਤੋਂ ਵੱਧ ਵੱਡੇ ਐਰੇ ਕਈ ਵਾਰ ਇਨ-ਪ੍ਰੋਗਰਾਮ ਡਾਇਨਾਮਿਕ ਮੈਮੋਰੀ ਐਲੋਕੇਸ਼ਨ, ਖਾਸ ਕਰਕੇ ਮੈਮੋਰੀ ਪੂਲ ਐਲੋਕੇਸ਼ਨ ਦੀ ਨਕਲ ਕਰਨ ਲਈ ਵਰਤੇ ਜਾਂਦੇ ਹਨ। ਇਤਿਹਾਸਕ ਤੌਰ 'ਤੇ, ਇਹ ਕਈ ਵਾਰ "ਡਾਇਨਾਮਿਕ ਮੈਮੋਰੀ" ਨੂੰ ਪੋਟੇਬਲ ਤੌਰ 'ਤੇ ਨਿਰਧਾਰਤ ਕਰਨ ਦਾ ਇੱਕੋ ਇੱਕ ਤਰੀਕਾ ਰਿਹਾ ਹੈ।
ਐਰੇ ਦੀ ਵਰਤੋਂ ਪ੍ਰੋਗਰਾਮਾਂ ਵਿੱਚ ਅੰਸ਼ਕ ਜਾਂ ਸੰਪੂਰਨ ਨਿਯੰਤਰਣ ਪ੍ਰਵਾਹ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ, (ਨਹੀਂ ਤਾਂ ਦੁਹਰਾਉਣ ਵਾਲੇ) ਮਲਟੀਪਲ IF ਸਟੇਟਮੈਂਟਾਂ ਦੇ ਸੰਖੇਪ ਵਿਕਲਪ ਵਜੋਂ। ਉਹਨਾਂ ਨੂੰ ਇਸ ਸੰਦਰਭ ਵਿੱਚ ਨਿਯੰਤਰਣ ਟੇਬਲ ਵਜੋਂ ਜਾਣਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਇੱਕ ਉਦੇਸ਼ ਦੁਆਰਾ ਬਣਾਏ ਗਏ ਦੁਭਾਸ਼ੀਏ ਦੇ ਨਾਲ ਜੋੜ ਕੇ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਜਿਸਦਾ ਨਿਯੰਤਰਣ ਪ੍ਰਵਾਹ ਐਰੇ ਵਿੱਚ ਮੌਜੂਦ ਮੁੱਲਾਂ ਦੇ ਅਨੁਸਾਰ ਬਦਲਿਆ ਜਾਂਦਾ ਹੈ। ਐਰੇ ਵਿੱਚ ਸਬਰੂਟੀਨ ਪੁਆਇੰਟਰ (ਜਾਂ ਅਨੁਸਾਰੀ ਸਬਰੂਟੀਨ ਨੰਬਰ ਜੋ SWITCH ਸਟੇਟਮੈਂਟਾਂ ਦੁਆਰਾ ਕੰਮ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ) ਹੋ ਸਕਦੇ ਹਨ ਜੋ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਦੇ ਮਾਰਗ ਨੂੰ ਨਿਰਦੇਸ਼ਤ ਕਰਦੇ ਹਨ।
ਤੱਤ ਪਛਾਣਕਰਤਾ ਅਤੇ ਐਡਰੈਸਿੰਗ ਫਾਰਮੂਲੇ
[ਸੋਧੋ]ਜਦੋਂ ਡੇਟਾ ਆਬਜੈਕਟ ਇੱਕ ਐਰੇ ਵਿੱਚ ਸਟੋਰ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, ਤਾਂ ਵਿਅਕਤੀਗਤ ਵਸਤੂਆਂ ਨੂੰ ਇੱਕ ਸੂਚਕਾਂਕ ਦੁਆਰਾ ਚੁਣਿਆ ਜਾਂਦਾ ਹੈ ਜੋ ਆਮ ਤੌਰ 'ਤੇ ਇੱਕ ਗੈਰ-ਨੈਗੇਟਿਵ ਸਕੇਲਰ ਪੂਰਨ ਅੰਕ ਹੁੰਦਾ ਹੈ। ਸੂਚਕਾਂਕ ਨੂੰ ਸਬਸਕ੍ਰਿਪਟ ਵੀ ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਇੱਕ ਸੂਚਕਾਂਕ ਇੱਕ ਸਟੋਰ ਕੀਤੀ ਵਸਤੂ ਲਈ ਐਰੇ ਮੁੱਲ ਨੂੰ ਮੈਪ ਕਰਦਾ ਹੈ।
ਇੱਥੇ ਤਿੰਨ ਤਰੀਕੇ ਹਨ ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਇੱਕ ਐਰੇ ਦੇ ਤੱਤਾਂ ਨੂੰ ਇੰਡੈਕਸ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ:
- 0 (ਜ਼ੀਰੋ-ਅਧਾਰਿਤ ਇੰਡੈਕਸਿੰਗ)
- ਐਰੇ ਦੇ ਪਹਿਲੇ ਤੱਤ ਨੂੰ 0 ਦੀ ਸਬਸਕ੍ਰਿਪਟ ਦੁਆਰਾ ਸੂਚੀਬੱਧ ਕੀਤਾ ਗਿਆ ਹੈ।[8]
- 1 (ਇੱਕ-ਆਧਾਰਿਤ ਇੰਡੈਕਸਿੰਗ)
- ਐਰੇ ਦਾ ਪਹਿਲਾ ਤੱਤ 1 ਦੀ ਸਬਸਕ੍ਰਿਪਟ ਦੁਆਰਾ ਸੂਚੀਬੱਧ ਕੀਤਾ ਗਿਆ ਹੈ।
- n (n-ਅਧਾਰਿਤ ਇੰਡੈਕਸਿੰਗ)
- ਇੱਕ ਐਰੇ ਦਾ ਅਧਾਰ ਸੂਚਕਾਂਕ ਸੁਤੰਤਰ ਤੌਰ 'ਤੇ ਚੁਣਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਆਮ ਤੌਰ 'ਤੇ n-ਅਧਾਰਿਤ ਇੰਡੈਕਸਿੰਗ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣ ਵਾਲੀਆਂ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਨਕਾਰਾਤਮਕ ਸੂਚਕਾਂਕ ਮੁੱਲਾਂ ਅਤੇ ਹੋਰ ਸਕੇਲਰ ਡਾਟਾ ਕਿਸਮਾਂ ਜਿਵੇਂ ਕਿ ਗਿਣਤੀਆਂ, ਜਾਂ ਅੱਖਰਾਂ ਨੂੰ ਐਰੇ ਸੂਚਕਾਂਕ ਵਜੋਂ ਵਰਤੇ ਜਾ ਸਕਦੇ ਹਨ।
ਜ਼ੀਰੋ ਅਧਾਰਤ ਇੰਡੈਕਸਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਬਹੁਤ ਸਾਰੀਆਂ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਦਾ ਡਿਜ਼ਾਈਨ ਵਿਕਲਪ ਹੈ, ਜਿਸ ਵਿੱਚ ਸੀ, ਜਾਵਾ ਅਤੇ ਲਿਸਪ ਸ਼ਾਮਲ ਹਨ। ਇਹ ਸਰਲ ਲਾਗੂਕਰਨ ਵੱਲ ਲੈ ਜਾਂਦਾ ਹੈ ਜਿੱਥੇ ਸਬਸਕ੍ਰਿਪਟ ਇੱਕ ਐਰੇ ਦੀ ਸ਼ੁਰੂਆਤੀ ਸਥਿਤੀ ਤੋਂ ਇੱਕ ਔਫਸੈੱਟ ਨੂੰ ਦਰਸਾਉਂਦੀ ਹੈ, ਇਸਲਈ ਪਹਿਲੇ ਤੱਤ ਵਿੱਚ ਜ਼ੀਰੋ ਦਾ ਇੱਕ ਆਫਸੈੱਟ ਹੁੰਦਾ ਹੈ।
ਐਰੇ ਦੇ ਕਈ ਮਾਪ ਹੋ ਸਕਦੇ ਹਨ, ਇਸ ਤਰ੍ਹਾਂ ਕਈ ਸੂਚਕਾਂਕ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕਿਸੇ ਐਰੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨਾ ਅਸਧਾਰਨ ਨਹੀਂ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਤਿੰਨ ਕਤਾਰਾਂ ਅਤੇ ਚਾਰ ਕਾਲਮਾਂ ਵਾਲਾ ਇੱਕ ਦੋ-ਅਯਾਮੀ ਐਰੇ A ਜ਼ੀਰੋ-ਅਧਾਰਿਤ ਇੰਡੈਕਸਿੰਗ ਸਿਸਟਮ ਦੇ ਮਾਮਲੇ ਵਿੱਚ ਸਮੀਕਰਨ A[1][3] ਦੁਆਰਾ ਦੂਜੀ ਕਤਾਰ ਅਤੇ ਚੌਥੇ ਕਾਲਮ ਵਿੱਚ ਤੱਤ ਤੱਕ ਪਹੁੰਚ ਪ੍ਰਦਾਨ ਕਰ ਸਕਦਾ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ ਦੋ ਸੂਚਕਾਂਕ ਦੋ-ਅਯਾਮੀ ਐਰੇ ਲਈ ਵਰਤੇ ਜਾਂਦੇ ਹਨ, ਤਿੰਨ-ਅਯਾਮੀ ਐਰੇ ਲਈ ਤਿੰਨ, ਅਤੇ n-ਅਯਾਮੀ ਐਰੇ ਲਈ n।
ਕਿਸੇ ਤੱਤ ਨੂੰ ਨਿਸ਼ਚਿਤ ਕਰਨ ਲਈ ਲੋੜੀਂਦੇ ਸੂਚਕਾਂਕ ਦੀ ਸੰਖਿਆ ਨੂੰ ਐਰੇ ਦਾ ਅਯਾਮ, ਅਯਾਮ ਜਾਂ ਦਰਜਾ ਕਿਹਾ ਜਾਂਦਾ ਹੈ।
ਸਟੈਂਡਰਡ ਐਰੇ ਵਿੱਚ, ਹਰੇਕ ਸੂਚਕਾਂਕ ਨੂੰ ਲਗਾਤਾਰ ਪੂਰਨ ਅੰਕਾਂ (ਜਾਂ ਕੁਝ ਗਿਣੀਆਂ ਕਿਸਮਾਂ ਦੇ ਲਗਾਤਾਰ ਮੁੱਲਾਂ) ਦੀ ਇੱਕ ਖਾਸ ਰੇਂਜ ਤੱਕ ਸੀਮਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਇੱਕ ਤੱਤ ਦਾ ਪਤਾ ਸੂਚਕਾਂਕ ਉੱਤੇ ਇੱਕ "ਲੀਨੀਅਰ" ਫਾਰਮੂਲੇ ਦੁਆਰਾ ਗਿਣਿਆ ਜਾਂਦਾ ਹੈ।
ਇੱਕ-ਅਯਾਮੀ ਐਰੇ
[ਸੋਧੋ]ਇੱਕ-ਅਯਾਮੀ ਐਰੇ (ਜਾਂ ਸਿੰਗਲ ਅਯਾਮ ਐਰੇ) ਰੇਖਿਕ ਐਰੇ ਦੀ ਇੱਕ ਕਿਸਮ ਹੈ। ਇਸਦੇ ਤੱਤਾਂ ਨੂੰ ਐਕਸੈਸ ਕਰਨ ਵਿੱਚ ਇੱਕ ਸਿੰਗਲ ਸਬਸਕ੍ਰਿਪਟ ਸ਼ਾਮਲ ਹੁੰਦੀ ਹੈ ਜੋ ਜਾਂ ਤਾਂ ਇੱਕ ਕਤਾਰ ਜਾਂ ਕਾਲਮ ਸੂਚਕਾਂਕ ਨੂੰ ਦਰਸਾਉਂਦੀ ਹੈ।
ਇੱਕ ਉਦਾਹਰਨ ਦੇ ਤੌਰ ਤੇ C ਘੋਸ਼ਣਾ int anArrayName[10] ਤੇ ਵਿਚਾਰ ਕਰੋ; ਜੋ ਦਸ ਪੂਰਨ ਅੰਕਾਂ ਦੀ ਇੱਕ-ਅਯਾਮੀ ਐਰੇ ਦਾ ਐਲਾਨ ਕਰਦਾ ਹੈ। ਇੱਥੇ, ਐਰੇ int ਕਿਸਮ ਦੇ ਦਸ ਤੱਤਾਂ ਨੂੰ ਸਟੋਰ ਕਰ ਸਕਦਾ ਹੈ। ਇਸ ਐਰੇ ਵਿੱਚ ਜ਼ੀਰੋ ਤੋਂ ਨੌਂ ਤੱਕ ਸੂਚਕਾਂਕ ਹਨ। ਉਦਾਹਰਨ ਲਈ, ਸਮੀਕਰਨ anArrayName[0] ਅਤੇ anArrayName[9] ਕ੍ਰਮਵਾਰ ਪਹਿਲੇ ਅਤੇ ਆਖਰੀ ਤੱਤ ਹਨ।
ਲੀਨੀਅਰ ਐਡਰੈਸਿੰਗ ਵਾਲੇ ਵੈਕਟਰ ਲਈ, ਸੂਚਕਾਂਕ i ਵਾਲਾ ਤੱਤ B + c · i ਪਤੇ 'ਤੇ ਸਥਿਤ ਹੁੰਦਾ ਹੈ, ਜਿੱਥੇ B ਇੱਕ ਸਥਿਰ ਅਧਾਰ ਪਤਾ ਹੁੰਦਾ ਹੈ ਅਤੇ c ਇੱਕ ਸਥਿਰ ਸਥਿਰਤਾ ਹੁੰਦਾ ਹੈ, ਜਿਸ ਨੂੰ ਕਈ ਵਾਰ ਐਡਰੈੱਸ ਇੰਕਰੀਮੈਂਟ ਜਾਂ ਸਟ੍ਰਾਈਡ ਕਿਹਾ ਜਾਂਦਾ ਹੈ।
ਜੇਕਰ ਵੈਧ ਤੱਤ ਸੂਚਕਾਂਕ 0 ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦੇ ਹਨ, ਤਾਂ ਸਥਿਰ B ਸਿਰਫ਼ ਐਰੇ ਦੇ ਪਹਿਲੇ ਤੱਤ ਦਾ ਪਤਾ ਹੁੰਦਾ ਹੈ। ਇਸ ਕਾਰਨ ਕਰਕੇ, C ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਦੱਸਦੀ ਹੈ ਕਿ ਐਰੇ ਸੂਚਕਾਂਕ ਹਮੇਸ਼ਾ 0 ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦੇ ਹਨ; ਅਤੇ ਬਹੁਤ ਸਾਰੇ ਪ੍ਰੋਗਰਾਮਰ ਉਸ ਤੱਤ ਨੂੰ "ਪਹਿਲੇ" ਦੀ ਬਜਾਏ "ਜ਼ੀਰੋਥ" ਕਹਿਣਗੇ।
ਹਾਲਾਂਕਿ, ਕੋਈ ਵੀ ਬੇਸ ਐਡਰੈੱਸ B ਦੀ ਉਚਿਤ ਚੋਣ ਦੁਆਰਾ ਪਹਿਲੇ ਐਲੀਮੈਂਟ ਦੇ ਇੰਡੈਕਸ ਨੂੰ ਚੁਣ ਸਕਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਜੇਕਰ ਐਰੇ ਵਿੱਚ ਪੰਜ ਤੱਤ ਹਨ, 1 ਤੋਂ 5 ਤੱਕ ਇੰਡੈਕਸ ਕੀਤਾ ਗਿਆ ਹੈ, ਅਤੇ ਬੇਸ ਐਡਰੈੱਸ B ਨੂੰ B + 30c ਨਾਲ ਬਦਲਿਆ ਗਿਆ ਹੈ, ਤਾਂ ਉਹਨਾਂ ਸਮਾਨ ਤੱਤਾਂ ਦੇ ਸੂਚਕਾਂਕ 31 ਤੋਂ 35 ਹੋਣਗੇ। ਜੇਕਰ ਸੰਖਿਆ 0 ਤੋਂ ਸ਼ੁਰੂ ਨਹੀਂ ਹੁੰਦੀ ਹੈ, ਤਾਂ ਸਥਿਰ B ਕਿਸੇ ਤੱਤ ਦਾ ਪਤਾ ਨਹੀਂ ਹੋ ਸਕਦਾ ਹੈ।
ਬਹੁ-ਆਯਾਮੀ ਐਰੇ
[ਸੋਧੋ]ਇੱਕ ਬਹੁ-ਆਯਾਮੀ ਐਰੇ ਲਈ, ਸੂਚਕਾਂਕ i,j ਵਾਲੇ ਤੱਤ ਦਾ ਪਤਾ B + c · i + d · j ਹੋਵੇਗਾ, ਜਿੱਥੇ ਗੁਣਾਂਕ c ਅਤੇ d ਕ੍ਰਮਵਾਰ ਕਤਾਰ ਅਤੇ ਕਾਲਮ ਐਡਰੈੱਸ ਵਾਧੇ ਹਨ।
ਆਮ ਤੌਰ 'ਤੇ, ਇੱਕ k-ਅਯਾਮੀ ਐਰੇ ਵਿੱਚ, ਸੂਚਕਾਂਕ i1, i2, ..., ik ਹੈ ਦੇ ਨਾਲ ਇੱਕ ਤੱਤ ਦਾ ਪਤਾ
B + c1 · i1 + c2 · i2 + … + ck · ik.
ਉਦਾਹਰਨ ਲਈ: int a[2][3];
ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਐਰੇ a ਦੀਆਂ 2 ਕਤਾਰਾਂ ਅਤੇ 3 ਕਾਲਮ ਹਨ, ਅਤੇ ਐਰੇ ਪੂਰਨ ਅੰਕ ਦੀ ਕਿਸਮ ਹੈ। ਇੱਥੇ ਅਸੀਂ 6 ਐਲੀਮੈਂਟਸ ਸਟੋਰ ਕਰ ਸਕਦੇ ਹਾਂ ਜੋ ਰੇਖਿਕ ਤੌਰ 'ਤੇ ਸਟੋਰ ਕੀਤੇ ਜਾਣਗੇ ਪਰ ਪਹਿਲੀ ਰੋਅ ਲੀਨੀਅਰ ਤੋਂ ਸ਼ੁਰੂ ਕਰਦੇ ਹੋਏ ਫਿਰ ਦੂਜੀ ਕਤਾਰ ਨਾਲ ਜਾਰੀ ਰੱਖਦੇ ਹੋਏ। ਉਪਰੋਕਤ ਐਰੇ ਨੂੰ a11, a12, a13, a21, a22, a23 ਦੇ ਰੂਪ ਵਿੱਚ ਸਟੋਰ ਕੀਤਾ ਜਾਵੇਗਾ।
ਇਸ ਫਾਰਮੂਲੇ ਲਈ ਸਿਰਫ਼ k ਗੁਣਾ ਅਤੇ k ਜੋੜਾਂ ਦੀ ਲੋੜ ਹੈ, ਕਿਸੇ ਵੀ ਐਰੇ ਲਈ ਜੋ ਮੈਮੋਰੀ ਵਿੱਚ ਫਿੱਟ ਹੋ ਸਕਦੀ ਹੈ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਜੇਕਰ ਕੋਈ ਗੁਣਾਂਕ 2 ਦੀ ਸਥਿਰ ਸ਼ਕਤੀ ਹੈ, ਤਾਂ ਗੁਣਾ ਨੂੰ ਬਿੱਟ ਸ਼ਿਫਟ ਕਰਕੇ ਬਦਲਿਆ ਜਾ ਸਕਦਾ ਹੈ।
ਗੁਣਾਂਕ ck ਨੂੰ ਚੁਣਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ ਤਾਂ ਜੋ ਹਰੇਕ ਵੈਧ ਸੂਚਕਾਂਕ ਟੂਪਲ ਇੱਕ ਵੱਖਰੇ ਤੱਤ ਦੇ ਪਤੇ ਨੂੰ ਮੈਪ ਕਰੇ।
ਜੇਕਰ ਹਰੇਕ ਸੂਚਕਾਂਕ ਲਈ ਨਿਊਨਤਮ ਕਾਨੂੰਨੀ ਮੁੱਲ 0 ਹੈ, ਤਾਂ B ਤੱਤ ਦਾ ਪਤਾ ਹੈ ਜਿਸਦੇ ਸਾਰੇ ਸੂਚਕਾਂਕ ਜ਼ੀਰੋ ਹਨ। ਜਿਵੇਂ ਕਿ ਇੱਕ-ਅਯਾਮੀ ਕੇਸ ਵਿੱਚ, ਤੱਤ ਸੂਚਕਾਂਕ ਨੂੰ ਬੇਸ ਐਡਰੈੱਸ B ਨੂੰ ਬਦਲ ਕੇ ਬਦਲਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ, ਜੇਕਰ ਇੱਕ ਦੋ-ਅਯਾਮੀ ਐਰੇ ਵਿੱਚ ਕ੍ਰਮਵਾਰ 1 ਤੋਂ 10 ਅਤੇ 1 ਤੋਂ 20 ਤੱਕ ਕਤਾਰਾਂ ਅਤੇ ਕਾਲਮ ਇੰਡੈਕਸ ਕੀਤੇ ਗਏ ਹਨ, ਤਾਂ B ਨੂੰ B ਦੁਆਰਾ ਬਦਲਣਾ + c1 − 3c2 ਉਹਨਾਂ ਨੂੰ ਕ੍ਰਮਵਾਰ 0 ਤੋਂ 9 ਅਤੇ 4 ਤੋਂ 23 ਤੱਕ ਪੁਨਰ-ਨੰਬਰ ਕਰਨ ਦਾ ਕਾਰਨ ਬਣੇਗਾ। ਇਸ ਵਿਸ਼ੇਸ਼ਤਾ ਦਾ ਫਾਇਦਾ ਉਠਾਉਂਦੇ ਹੋਏ, ਕੁਝ ਭਾਸ਼ਾਵਾਂ (ਜਿਵੇਂ ਕਿ FORTRAN 77) ਨਿਸ਼ਚਿਤ ਕਰਦੀਆਂ ਹਨ ਕਿ ਐਰੇ ਸੂਚਕਾਂਕ 1 ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦੇ ਹਨ, ਜਿਵੇਂ ਕਿ ਗਣਿਤਿਕ ਪਰੰਪਰਾ ਵਿੱਚ ਜਦੋਂ ਕਿ ਦੂਜੀਆਂ ਭਾਸ਼ਾਵਾਂ (ਜਿਵੇਂ ਕਿ ਫੋਰਟਰਨ 90, ਪਾਸਕਲ ਅਤੇ ਐਲਗੋਲ) ਉਪਭੋਗਤਾ ਨੂੰ ਹਰੇਕ ਸੂਚਕਾਂਕ ਲਈ ਘੱਟੋ-ਘੱਟ ਮੁੱਲ ਚੁਣਨ ਦਿੰਦੀਆਂ ਹਨ।
ਡੋਪ ਵੈਕਟਰ
[ਸੋਧੋ]ਐਡਰੈੱਸਿੰਗ ਫਾਰਮੂਲਾ ਪੂਰੀ ਤਰ੍ਹਾਂ ਨਾਲ ਆਯਾਮ d, ਬੇਸ ਐਡਰੈੱਸ B, ਅਤੇ ਵਾਧੇ c1, c2, ..., ck ਦੁਆਰਾ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਹਨਾਂ ਪੈਰਾਮੀਟਰਾਂ ਨੂੰ ਇੱਕ ਰਿਕਾਰਡ ਵਿੱਚ ਪੈਕ ਕਰਨਾ ਅਕਸਰ ਲਾਭਦਾਇਕ ਹੁੰਦਾ ਹੈ ਜਿਸਨੂੰ ਐਰੇ ਦੇ ਡਿਸਕ੍ਰਿਪਟਰ, ਸਟ੍ਰਾਈਡ ਵੈਕਟਰ, ਜਾਂ ਡੋਪ ਵੈਕਟਰ ਕਿਹਾ ਜਾਂਦਾ ਹੈ। [2] [3] ਹਰੇਕ ਤੱਤ ਦਾ ਆਕਾਰ, ਅਤੇ ਹਰੇਕ ਸੂਚਕਾਂਕ ਲਈ ਮਨਜ਼ੂਰ ਘੱਟੋ-ਘੱਟ ਅਤੇ ਵੱਧ ਤੋਂ ਵੱਧ ਮੁੱਲ ਵੀ ਡੋਪ ਵੈਕਟਰ ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ। ਡੋਪ ਵੈਕਟਰ ਐਰੇ ਲਈ ਇੱਕ ਸੰਪੂਰਨ ਹੈਂਡਲ ਹੈ, ਅਤੇ ਪ੍ਰਕਿਰਿਆਵਾਂ ਲਈ ਆਰਗੂਮੈਂਟਾਂ ਵਜੋਂ ਐਰੇ ਪਾਸ ਕਰਨ ਦਾ ਇੱਕ ਸੁਵਿਧਾਜਨਕ ਤਰੀਕਾ ਹੈ। ਬਹੁਤ ਸਾਰੇ ਉਪਯੋਗੀ ਐਰੇ ਸਲਾਈਸਿੰਗ ਓਪਰੇਸ਼ਨ (ਜਿਵੇਂ ਕਿ ਇੱਕ ਉਪ-ਐਰੇ ਦੀ ਚੋਣ ਕਰਨਾ, ਸੂਚਕਾਂਕ ਦੀ ਅਦਲਾ-ਬਦਲੀ ਕਰਨਾ, ਜਾਂ ਸੂਚਕਾਂਕ ਦੀ ਦਿਸ਼ਾ ਨੂੰ ਉਲਟਾਉਣਾ) ਡੋਪ ਵੈਕਟਰ ਨੂੰ ਹੇਰਾਫੇਰੀ ਕਰਕੇ ਬਹੁਤ ਕੁਸ਼ਲਤਾ ਨਾਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।[2]
ਸੰਖੇਪ ਖਾਕਾ
ਮੁੱਖ ਲੇਖ: ਕਤਾਰ- ਅਤੇ ਕਾਲਮ-ਮੁੱਖ ਕ੍ਰਮ
ਅਕਸਰ ਗੁਣਾਂਕ ਨੂੰ ਚੁਣਿਆ ਜਾਂਦਾ ਹੈ ਤਾਂ ਜੋ ਤੱਤ ਮੈਮੋਰੀ ਦੇ ਇੱਕ ਸੰਯੁਕਤ ਖੇਤਰ 'ਤੇ ਕਬਜ਼ਾ ਕਰ ਲੈਣ। ਹਾਲਾਂਕਿ, ਇਹ ਜ਼ਰੂਰੀ ਨਹੀਂ ਹੈ. ਭਾਵੇਂ ਐਰੇ ਹਮੇਸ਼ਾ ਇਕਸਾਰ ਤੱਤਾਂ ਨਾਲ ਬਣਾਏ ਜਾਂਦੇ ਹਨ, ਕੁਝ ਐਰੇ ਸਲਾਈਸਿੰਗ ਓਪਰੇਸ਼ਨ ਉਹਨਾਂ ਤੋਂ ਗੈਰ-ਸੰਬੰਧਿਤ ਉਪ-ਐਰੇ ਬਣਾ ਸਕਦੇ ਹਨ।
ਕਤਾਰ-ਮੁੱਖ ਆਰਡਰ ਲੇਆਉਟ ਵਿੱਚ (ਸਟੈਟਿਕ ਤੌਰ 'ਤੇ ਘੋਸ਼ਿਤ ਐਰੇ ਲਈ C ਦੁਆਰਾ ਅਪਣਾਇਆ ਗਿਆ), ਹਰੇਕ ਕਤਾਰ ਦੇ ਤੱਤ ਲਗਾਤਾਰ ਸਥਿਤੀਆਂ ਵਿੱਚ ਸਟੋਰ ਕੀਤੇ ਜਾਂਦੇ ਹਨ ਅਤੇ ਇੱਕ ਕਤਾਰ ਦੇ ਸਾਰੇ ਤੱਤਾਂ ਦਾ ਇੱਕ ਲਗਾਤਾਰ ਕਤਾਰ ਦੇ ਕਿਸੇ ਵੀ ਤੱਤ ਨਾਲੋਂ ਘੱਟ ਪਤਾ ਹੁੰਦਾ ਹੈ:
ਕਾਲਮ-ਮੁੱਖ ਕ੍ਰਮ ਵਿੱਚ (ਰਵਾਇਤੀ ਤੌਰ 'ਤੇ ਫੋਰਟਰਨ ਦੁਆਰਾ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ), ਹਰੇਕ ਕਾਲਮ ਦੇ ਤੱਤ ਮੈਮੋਰੀ ਵਿੱਚ ਲਗਾਤਾਰ ਹੁੰਦੇ ਹਨ ਅਤੇ ਇੱਕ ਕਾਲਮ ਦੇ ਸਾਰੇ ਤੱਤਾਂ ਦਾ ਇੱਕ ਲਗਾਤਾਰ ਕਾਲਮ ਦੇ ਕਿਸੇ ਵੀ ਤੱਤ ਨਾਲੋਂ ਘੱਟ ਪਤਾ ਹੁੰਦਾ ਹੈ:
ਤਿੰਨ ਜਾਂ ਵੱਧ ਸੂਚਕਾਂਕ ਵਾਲੀਆਂ ਐਰੇਆਂ ਲਈ, "ਰੋਅ ਮੇਜਰ ਆਰਡਰ" ਕਿਸੇ ਵੀ ਦੋ ਤੱਤਾਂ ਨੂੰ ਲਗਾਤਾਰ ਪੁਜ਼ੀਸ਼ਨਾਂ ਵਿੱਚ ਰੱਖਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਦੇ ਸੂਚਕਾਂਕ ਟੂਪਲ ਆਖਰੀ ਸੂਚਕਾਂਕ ਵਿੱਚ ਸਿਰਫ਼ ਇੱਕ ਨਾਲ ਵੱਖ ਹੁੰਦੇ ਹਨ। "ਕਾਲਮ ਮੇਜਰ ਆਰਡਰ" ਪਹਿਲੇ ਸੂਚਕਾਂਕ ਦੇ ਸਬੰਧ ਵਿੱਚ ਸਮਾਨ ਹੈ।
ਸਿਸਟਮਾਂ ਵਿੱਚ ਜੋ ਪ੍ਰੋਸੈਸਰ ਕੈਸ਼ ਜਾਂ ਵਰਚੁਅਲ ਮੈਮੋਰੀ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ, ਇੱਕ ਐਰੇ ਨੂੰ ਸਕੈਨ ਕਰਨਾ ਬਹੁਤ ਤੇਜ਼ ਹੁੰਦਾ ਹੈ ਜੇਕਰ ਲਗਾਤਾਰ ਤੱਤ ਮੈਮੋਰੀ ਵਿੱਚ ਲਗਾਤਾਰ ਪੁਜ਼ੀਸ਼ਨਾਂ ਵਿੱਚ ਸਟੋਰ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, ਨਾ ਕਿ ਘੱਟ ਖਿੰਡੇ ਹੋਏ। ਇਸ ਨੂੰ ਸਥਾਨਿਕ ਸਥਾਨ ਵਜੋਂ ਜਾਣਿਆ ਜਾਂਦਾ ਹੈ, ਜੋ ਕਿ ਸੰਦਰਭ ਦੇ ਸਥਾਨ ਦੀ ਇੱਕ ਕਿਸਮ ਹੈ। ਬਹੁਤ ਸਾਰੇ ਐਲਗੋਰਿਦਮ ਜੋ ਬਹੁ-ਆਯਾਮੀ ਐਰੇ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ ਉਹਨਾਂ ਨੂੰ ਇੱਕ ਅਨੁਮਾਨਯੋਗ ਕ੍ਰਮ ਵਿੱਚ ਸਕੈਨ ਕਰਨਗੇ। ਇੱਕ ਪ੍ਰੋਗਰਾਮਰ (ਜਾਂ ਇੱਕ ਵਧੀਆ ਕੰਪਾਈਲਰ) ਹਰੇਕ ਐਰੇ ਲਈ ਕਤਾਰ- ਜਾਂ ਕਾਲਮ-ਮੇਜਰ ਲੇਆਉਟ ਵਿਚਕਾਰ ਚੋਣ ਕਰਨ ਲਈ ਇਸ ਜਾਣਕਾਰੀ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਦੋ ਮੈਟ੍ਰਿਕਸ ਦੇ ਉਤਪਾਦ A·B ਦੀ ਗਣਨਾ ਕਰਦੇ ਸਮੇਂ, A ਨੂੰ ਕਤਾਰ-ਮੁੱਖ ਕ੍ਰਮ ਵਿੱਚ ਅਤੇ B ਨੂੰ ਕਾਲਮ-ਮੇਜਰ ਕ੍ਰਮ ਵਿੱਚ ਸਟੋਰ ਕਰਨਾ ਸਭ ਤੋਂ ਵਧੀਆ ਹੋਵੇਗਾ।
ਮੁੜ ਆਕਾਰ ਦੇਣਾ
ਮੁੱਖ ਲੇਖ: ਡਾਇਨਾਮਿਕ ਐਰੇ
ਸਟੈਟਿਕ ਐਰੇ ਦਾ ਇੱਕ ਆਕਾਰ ਹੁੰਦਾ ਹੈ ਜੋ ਉਦੋਂ ਫਿਕਸ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਉਹ ਬਣਾਏ ਜਾਂਦੇ ਹਨ ਅਤੇ ਨਤੀਜੇ ਵਜੋਂ ਐਲੀਮੈਂਟਸ ਨੂੰ ਪਾਉਣ ਜਾਂ ਹਟਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਦਿੰਦੇ ਹਨ। ਹਾਲਾਂਕਿ, ਇੱਕ ਨਵੀਂ ਐਰੇ ਨਿਰਧਾਰਤ ਕਰਕੇ ਅਤੇ ਪੁਰਾਣੀ ਐਰੇ ਦੀ ਸਮੱਗਰੀ ਨੂੰ ਇਸ ਵਿੱਚ ਨਕਲ ਕਰਕੇ, ਇੱਕ ਐਰੇ ਦੇ ਇੱਕ ਗਤੀਸ਼ੀਲ ਸੰਸਕਰਣ ਨੂੰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਲਾਗੂ ਕਰਨਾ ਸੰਭਵ ਹੈ; ਡਾਇਨਾਮਿਕ ਐਰੇ ਵੇਖੋ। ਜੇਕਰ ਇਹ ਕਾਰਵਾਈ ਕਦੇ-ਕਦਾਈਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਐਰੇ ਦੇ ਅੰਤ ਵਿੱਚ ਸੰਮਿਲਨਾਂ ਲਈ ਸਿਰਫ਼ ਅਮੋਰਟਾਈਜਡ ਸਥਿਰ ਸਮੇਂ ਲਈ ਹੁੰਦੀ ਹੈ।
ਕੁਝ ਐਰੇ ਡਾਟਾ ਸਟਰਕਚਰ ਸਟੋਰੇਜ ਨੂੰ ਮੁੜ-ਨਿਰਧਾਰਤ ਨਹੀਂ ਕਰਦੇ ਹਨ, ਪਰ ਵਰਤੋਂ ਵਿੱਚ ਐਰੇ ਦੇ ਤੱਤਾਂ ਦੀ ਗਿਣਤੀ ਨੂੰ ਸਟੋਰ ਕਰਦੇ ਹਨ, ਜਿਸਨੂੰ ਗਿਣਤੀ ਜਾਂ ਆਕਾਰ ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਐਰੇ ਨੂੰ ਇੱਕ ਸਥਿਰ ਅਧਿਕਤਮ ਆਕਾਰ ਜਾਂ ਸਮਰੱਥਾ ਦੇ ਨਾਲ ਇੱਕ ਗਤੀਸ਼ੀਲ ਐਰੇ ਬਣਾਉਂਦਾ ਹੈ; ਪਾਸਕਲ ਸਤਰ ਇਸ ਦੀਆਂ ਉਦਾਹਰਣਾਂ ਹਨ।
ਗੈਰ-ਲੀਨੀਅਰ ਫਾਰਮੂਲੇ
ਵਧੇਰੇ ਗੁੰਝਲਦਾਰ (ਗੈਰ-ਲੀਨੀਅਰ) ਫਾਰਮੂਲੇ ਕਦੇ-ਕਦਾਈਂ ਵਰਤੇ ਜਾਂਦੇ ਹਨ। ਇੱਕ ਸੰਖੇਪ ਦੋ-ਅਯਾਮੀ ਤਿਕੋਣੀ ਐਰੇ ਲਈ, ਉਦਾਹਰਨ ਲਈ, ਐਡਰੈਸਿੰਗ ਫਾਰਮੂਲਾ ਡਿ ਤਗਰੀ 2 ਦਾ ਇੱਕ ਬਹੁਪਦ ਹੈ।
ਕੁਸ਼ਲਤਾ
[ਸੋਧੋ]ਦੋਵੇਂ ਸਟੋਰ ਅਤੇ ਚੁਣੋ (ਨਿਰਧਾਰਤ ਸਭ ਤੋਂ ਮਾੜੇ ਕੇਸ) ਨਿਰੰਤਰ ਸਮਾਂ। ਐਰੇ ਐਲੀਮੈਂਟਸ n ਦੀ ਸੰਖਿਆ ਵਿੱਚ ਰੇਖਿਕ (O(n)) ਸਪੇਸ ਲੈਂਦੇ ਹਨ ਜੋ ਉਹ ਰੱਖਦੇ ਹਨ।
ਐਲੀਮੈਂਟ ਸਾਈਜ਼ k ਵਾਲੀ ਇੱਕ ਐਰੇ ਵਿੱਚ ਅਤੇ B ਬਾਈਟ ਦੀ ਇੱਕ ਕੈਸ਼ ਲਾਈਨ ਸਾਈਜ਼ ਵਾਲੀ ਮਸ਼ੀਨ ਵਿੱਚ, n ਐਲੀਮੈਂਟਸ ਦੀ ਇੱਕ ਐਰੇ ਰਾਹੀਂ ਦੁਹਰਾਉਣ ਲਈ ਘੱਟੋ-ਘੱਟ ਸੀਲਿੰਗ (nk/B) ਕੈਸ਼ ਮਿਸ ਹੋਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਕਿਉਂਕਿ ਇਸਦੇ ਤੱਤ ਲਗਾਤਾਰ ਮੈਮੋਰੀ ਟਿਕਾਣਿਆਂ ਨੂੰ ਰੱਖਦੇ ਹਨ।ਇਹ ਮੋਟੇ ਤੌਰ 'ਤੇ ਬੇਤਰਤੀਬ ਮੈਮੋਰੀ ਟਿਕਾਣਿਆਂ 'ਤੇ n ਐਲੀਮੈਂਟਸ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਲਈ ਲੋੜੀਂਦੀ ਕੈਸ਼ ਮਿਸ ਦੀ ਗਿਣਤੀ ਨਾਲੋਂ B/k ਦਾ ਇੱਕ ਕਾਰਕ ਹੈ। ਨਤੀਜੇ ਵਜੋਂ, ਇੱਕ ਐਰੇ ਉੱਤੇ ਕ੍ਰਮਵਾਰ ਦੁਹਰਾਓ ਬਹੁਤ ਸਾਰੇ ਹੋਰ ਡੇਟਾ ਸਟਰਕਚਰਜ਼ ਉੱਤੇ ਦੁਹਰਾਓ ਨਾਲੋਂ ਅਭਿਆਸ ਵਿੱਚ ਬਹੁਤ ਤੇਜ਼ ਹੈ, ਇੱਕ ਵਿਸ਼ੇਸ਼ਤਾ ਜਿਸਨੂੰ ਲੋਕਲਿਟੀ ਆਫ਼ ਰੈਫਰੈਂਸ ਕਿਹਾ ਜਾਂਦਾ ਹੈ (ਹਾਲਾਂਕਿ, ਇਸਦਾ ਮਤਲਬ ਇਹ ਨਹੀਂ ਹੈ ਕਿ ਉਸੇ (ਸਥਾਨਕ) ਐਰੇ ਦੇ ਅੰਦਰ ਇੱਕ ਸੰਪੂਰਨ ਹੈਸ਼ ਜਾਂ ਮਾਮੂਲੀ ਹੈਸ਼ ਦੀ ਵਰਤੋਂ ਕਰਨਾ , ਹੋਰ ਵੀ ਤੇਜ਼ ਨਹੀਂ ਹੋਵੇਗਾ - ਅਤੇ ਨਿਰੰਤਰ ਸਮੇਂ ਵਿੱਚ ਪ੍ਰਾਪਤੀਯੋਗ)। ਲਾਇਬ੍ਰੇਰੀਆਂ ਮੈਮੋਰੀ ਦੀਆਂ ਰੇਂਜਾਂ (ਜਿਵੇਂ ਕਿ memcpy) ਦੀ ਨਕਲ ਕਰਨ ਲਈ ਘੱਟ-ਪੱਧਰੀ ਅਨੁਕੂਲਿਤ ਸੁਵਿਧਾਵਾਂ ਪ੍ਰਦਾਨ ਕਰਦੀਆਂ ਹਨ ਜੋ ਕਿ ਵਿਅਕਤੀਗਤ ਐਲੀਮੈਂਟ ਐਕਸੈਸ ਦੁਆਰਾ ਪ੍ਰਾਪਤ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ ਨਾਲੋਂ ਕਾਫ਼ੀ ਤੇਜ਼ੀ ਨਾਲ ਐਰੇ ਐਲੀਮੈਂਟਸ ਦੇ ਨਾਲ ਜੁੜੇ ਬਲਾਕਾਂ ਨੂੰ ਮੂਵ ਕਰਨ ਲਈ ਵਰਤੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ। ਅਜਿਹੇ ਅਨੁਕੂਲਿਤ ਰੁਟੀਨ ਦੀ ਗਤੀ ਐਰੇ ਐਲੀਮੈਂਟ ਦੇ ਆਕਾਰ, ਆਰਕੀਟੈਕਚਰ ਅਤੇ ਲਾਗੂਕਰਨ ਦੁਆਰਾ ਬਦਲਦੀ ਹੈ।
ਮੈਮੋਰੀ ਦੇ ਹਿਸਾਬ ਨਾਲ, ਐਰੇ ਸੰਖੇਪ ਡੇਟਾ ਬਣਤਰ ਹੁੰਦੇ ਹਨ ਜਿਸ ਵਿੱਚ ਪ੍ਰਤੀ-ਤੱਤ ਓਵਰਹੈੱਡ ਨਹੀਂ ਹੁੰਦੇ ਹਨ। ਇੱਥੇ ਪ੍ਰਤੀ-ਐਰੇ ਓਵਰਹੈੱਡ ਹੋ ਸਕਦਾ ਹੈ (ਉਦਾਹਰਨ ਲਈ, ਸੂਚਕਾਂਕ ਸੀਮਾਵਾਂ ਨੂੰ ਸਟੋਰ ਕਰਨ ਲਈ) ਪਰ ਇਹ ਭਾਸ਼ਾ-ਨਿਰਭਰ ਹੈ। ਇਹ ਵੀ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਇੱਕ ਐਰੇ ਵਿੱਚ ਸਟੋਰ ਕੀਤੇ ਤੱਤਾਂ ਨੂੰ ਵਿਅਕਤੀਗਤ ਵੇਰੀਏਬਲਾਂ ਵਿੱਚ ਸਟੋਰ ਕੀਤੇ ਸਮਾਨ ਤੱਤਾਂ ਨਾਲੋਂ ਘੱਟ ਮੈਮੋਰੀ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਕਿਉਂਕਿ ਕਈ ਐਰੇ ਤੱਤ ਇੱਕ ਸ਼ਬਦ ਵਿੱਚ ਸਟੋਰ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ; ਅਜਿਹੇ ਐਰੇ ਨੂੰ ਅਕਸਰ ਪੈਕਡ ਐਰੇ ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਇੱਕ ਅਤਿ (ਪਰ ਆਮ ਤੌਰ 'ਤੇ ਵਰਤਿਆ ਜਾਂਦਾ) ਕੇਸ ਬਿੱਟ ਐਰੇ ਹੁੰਦਾ ਹੈ, ਜਿੱਥੇ ਹਰ ਬਿੱਟ ਇੱਕ ਐਲੀਮੈਂਟ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ ਇੱਕ ਸਿੰਗਲ ਓਕਟੇਟ ਸਭ ਤੋਂ ਸੰਖੇਪ ਰੂਪ ਵਿੱਚ, 8 ਵੱਖ-ਵੱਖ ਸਥਿਤੀਆਂ ਦੇ 256 ਵੱਖ-ਵੱਖ ਸੰਜੋਗਾਂ ਨੂੰ ਰੱਖ ਸਕਦਾ ਹੈ।
ਸਟੈਟਿਕ ਤੌਰ 'ਤੇ ਅਨੁਮਾਨਿਤ ਪਹੁੰਚ ਪੈਟਰਨਾਂ ਦੇ ਨਾਲ ਐਰੇ ਪਹੁੰਚ ਡੇਟਾ ਸਮਾਨਤਾ ਦਾ ਇੱਕ ਪ੍ਰਮੁੱਖ ਸਰੋਤ ਹਨ।
ਡਾਇਨਾਮਿਕ ਐਰੇ ਜਾਂ ਵਧਣਯੋਗ ਐਰੇ ਐਰੇ ਦੇ ਸਮਾਨ ਹੁੰਦੇ ਹਨ ਪਰ ਤੱਤਾਂ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਅਤੇ ਮਿਟਾਉਣ ਦੀ ਯੋਗਤਾ ਜੋੜਦੇ ਹਨ; ਅੰਤ ਵਿੱਚ ਜੋੜਨਾ ਅਤੇ ਮਿਟਾਉਣਾ ਖਾਸ ਤੌਰ 'ਤੇ ਕੁਸ਼ਲ ਹੈ। ਹਾਲਾਂਕਿ, ਉਹ ਲੀਨੀਅਰ (Θ(n)) ਵਾਧੂ ਸਟੋਰੇਜ ਰਿਜ਼ਰਵ ਕਰਦੇ ਹਨ, ਜਦੋਂ ਕਿ ਐਰੇ ਵਾਧੂ ਸਟੋਰੇਜ ਰਿਜ਼ਰਵ ਨਹੀਂ ਕਰਦੇ ਹਨ।
ਐਸੋਸਿਏਟਿਵ ਐਰੇ ਵੱਡੇ ਸਟੋਰੇਜ ਓਵਰਹੈੱਡਸ ਦੇ ਬਿਨਾਂ ਐਰੇ-ਵਰਗੇ ਕਾਰਜਸ਼ੀਲਤਾ ਲਈ ਇੱਕ ਵਿਧੀ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ ਜਦੋਂ ਸੂਚਕਾਂਕ ਮੁੱਲ ਸਪਾਰਸ ਹੁੰਦੇ ਹਨ। ਉਦਾਹਰਨ ਲਈ, ਇੱਕ ਐਰੇ ਜਿਸ ਵਿੱਚ ਕੇਵਲ ਇੰਡੈਕਸ 1 ਅਤੇ 2 ਬਿਲੀਅਨ ਦੇ ਮੁੱਲ ਸ਼ਾਮਲ ਹੁੰਦੇ ਹਨ, ਅਜਿਹੇ ਢਾਂਚੇ ਦੀ ਵਰਤੋਂ ਕਰਨ ਤੋਂ ਲਾਭ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹਨ। ਪੂਰਨ ਅੰਕ ਵਾਲੀਆਂ ਕੁੰਜੀਆਂ ਦੇ ਨਾਲ ਵਿਸ਼ੇਸ਼ ਸਹਿਯੋਗੀ ਐਰੇ ਵਿੱਚ ਪੈਟਰੀਸ਼ੀਆ ਟ੍ਰਾਈਜ਼, ਜੂਡੀ ਐਰੇ ਅਤੇ ਵੈਨ ਐਮਡੇ ਬੋਅਸ ਟ੍ਰੀਸ ਸ਼ਾਮਲ ਹਨ।
ਸੰਤੁਲਿਤ ਰੁੱਖਾਂ ਨੂੰ ਸੂਚਕਾਂਕ ਪਹੁੰਚ ਲਈ O(log n) ਸਮੇਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਪਰ ਇਹ O(log n) ਸਮੇਂ ਵਿੱਚ ਤੱਤਾਂ ਨੂੰ ਸੰਮਿਲਿਤ ਕਰਨ ਜਾਂ ਮਿਟਾਉਣ ਦੀ ਵੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ, [13] ਜਦੋਂ ਕਿ ਵਧਣ ਯੋਗ ਐਰੇ ਨੂੰ ਇੱਕ 'ਤੇ ਤੱਤ ਪਾਉਣ ਜਾਂ ਮਿਟਾਉਣ ਲਈ ਲੀਨੀਅਰ (Θ(n)) ਸਮੇਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਮਨਮਾਨੀ ਸਥਿਤੀ.
ਲਿੰਕਡ ਸੂਚੀਆਂ ਮੱਧ ਵਿੱਚ ਨਿਰੰਤਰ ਸਮੇਂ ਨੂੰ ਹਟਾਉਣ ਅਤੇ ਸੰਮਿਲਨ ਦੀ ਆਗਿਆ ਦਿੰਦੀਆਂ ਹਨ ਪਰ ਇੰਡੈਕਸਡ ਪਹੁੰਚ ਲਈ ਲੀਨੀਅਰ ਸਮਾਂ ਲੈਂਦੇ ਹਨ। ਉਹਨਾਂ ਦੀ ਮੈਮੋਰੀ ਵਰਤੋਂ ਆਮ ਤੌਰ 'ਤੇ ਐਰੇ ਨਾਲੋਂ ਮਾੜੀ ਹੁੰਦੀ ਹੈ, ਪਰ ਅਜੇ ਵੀ ਰੇਖਿਕ ਹੈ।
ਇੱਕ Iliffe ਵੈਕਟਰ ਇੱਕ ਬਹੁ-ਆਯਾਮੀ ਐਰੇ ਬਣਤਰ ਦਾ ਵਿਕਲਪ ਹੈ। ਇਹ ਇੱਕ ਅਯਾਮ ਘੱਟ ਦੇ ਐਰੇ ਲਈ ਹਵਾਲਿਆਂ ਦੀ ਇੱਕ-ਅਯਾਮੀ ਐਰੇ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਦੋ ਅਯਾਮਾਂ ਲਈ, ਖਾਸ ਤੌਰ 'ਤੇ, ਇਹ ਵਿਕਲਪਕ ਬਣਤਰ ਵੈਕਟਰਾਂ ਲਈ ਪੁਆਇੰਟਰਾਂ ਦਾ ਇੱਕ ਵੈਕਟਰ ਹੋਵੇਗਾ, ਹਰੇਕ ਕਤਾਰ ਲਈ ਇੱਕ (c ਜਾਂ c++ 'ਤੇ ਪੁਆਇੰਟਰ)। ਇਸ ਤਰ੍ਹਾਂ ਇੱਕ ਐਰੇ A ਦੀ ਕਤਾਰ i ਅਤੇ ਕਾਲਮ j ਵਿੱਚ ਇੱਕ ਤੱਤ ਡਬਲ ਇੰਡੈਕਸਿੰਗ ਦੁਆਰਾ ਐਕਸੈਸ ਕੀਤਾ ਜਾਵੇਗਾ (A[i][j] ਆਮ ਸੰਕੇਤ ਵਿੱਚ)। ਇਹ ਵਿਕਲਪਿਕ ਢਾਂਚਾ ਜਾਗਡ ਐਰੇ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ, ਜਿੱਥੇ ਹਰੇਕ ਕਤਾਰ ਦਾ ਆਕਾਰ ਵੱਖਰਾ ਹੋ ਸਕਦਾ ਹੈ—ਜਾਂ, ਆਮ ਤੌਰ 'ਤੇ, ਜਿੱਥੇ ਹਰੇਕ ਸੂਚਕਾਂਕ ਦੀ ਵੈਧ ਰੇਂਜ ਸਾਰੇ ਪਿਛਲੇ ਸੂਚਕਾਂਕ ਦੇ ਮੁੱਲਾਂ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ। ਇਹ ਇੱਕ ਗੁਣਾ (ਕਾਲਮ ਐਡਰੈੱਸ ਇਨਕਰੀਮੈਂਟ ਦੁਆਰਾ) ਨੂੰ ਇੱਕ ਬਿੱਟ ਸ਼ਿਫਟ (ਕਤਾਰ ਪੁਆਇੰਟਰਾਂ ਦੇ ਵੈਕਟਰ ਨੂੰ ਇੰਡੈਕਸ ਕਰਨ ਲਈ) ਅਤੇ ਇੱਕ ਵਾਧੂ ਮੈਮੋਰੀ ਐਕਸੈਸ (ਕਤਾਰ ਐਡਰੈੱਸ ਪ੍ਰਾਪਤ ਕਰਨਾ) ਦੁਆਰਾ ਬਦਲਦਾ ਹੈ, ਜੋ ਕਿ ਕੁਝ ਢਾਂਚੇ ਵਿੱਚ ਲਾਭਦਾਇਕ ਹੋ ਸਕਦਾ ਹੈ।
ਮਾਪ
[ਸੋਧੋ]ਕਿਸੇ ਐਰੇ ਦਾ ਆਯਾਮ ਕਿਸੇ ਤੱਤ ਨੂੰ ਚੁਣਨ ਲਈ ਲੋੜੀਂਦੇ ਸੂਚਕਾਂਕ ਦੀ ਸੰਖਿਆ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ, ਜੇਕਰ ਐਰੇ ਨੂੰ ਸੰਭਾਵਿਤ ਸੂਚਕਾਂਕ ਸੰਜੋਗਾਂ ਦੇ ਇੱਕ ਸੈੱਟ 'ਤੇ ਇੱਕ ਫੰਕਸ਼ਨ ਵਜੋਂ ਦੇਖਿਆ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇਹ ਸਪੇਸ ਦਾ ਆਯਾਮ ਹੁੰਦਾ ਹੈ ਜਿਸਦਾ ਡੋਮੇਨ ਇੱਕ ਵੱਖਰਾ ਸਬਸੈੱਟ ਹੁੰਦਾ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ ਇੱਕ-ਅਯਾਮੀ ਐਰੇ ਡੇਟਾ ਦੀ ਇੱਕ ਸੂਚੀ ਹੈ, ਇੱਕ ਦੋ-ਅਯਾਮੀ ਐਤਿੰਨ-ਅਯਾਮੀ ਇੱਕ ਆਇਤਕਾਰ ਹੈ, ਇੱਕ ਤਿੰਨ-ਅਯਾਮੀ ਐਰੇ ਡੇਟਾ ਦਾ ਇੱਕ ਬਲਾਕ ਹੈ, ਆਦਿ।
ਇਸ ਨੂੰ ਦਿੱਤੇ ਗਏ ਡੋਮੇਨ ਦੇ ਨਾਲ ਸਾਰੇ ਮੈਟ੍ਰਿਕਸ ਦੇ ਸੈੱਟ ਦੇ ਮਾਪ ਨਾਲ ਉਲਝਣ ਵਿੱਚ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਅਰਥਾਤ, ਐਰੇ ਵਿੱਚ ਤੱਤਾਂ ਦੀ ਸੰਖਿਆ। ਉਦਾਹਰਨ ਲਈ, 5 ਕਤਾਰਾਂ ਅਤੇ 4 ਕਾਲਮਾਂ ਵਾਲੀ ਇੱਕ ਐਰੇ ਦੋ-ਅਯਾਮੀ ਹੈ, ਪਰ ਅਜਿਹੇ ਮੈਟ੍ਰਿਕਸ ਇੱਕ 20-ਅਯਾਮੀ ਸਪੇਸ ਬਣਾਉਂਦੇ ਹਨ। ਇਸੇ ਤਰ੍ਹਾਂ, ਇੱਕ ਤਿੰਨ-ਅਯਾਮੀ ਵੈਕਟਰ ਨੂੰ ਆਕਾਰ ਤਿੰਨ ਦੀ ਇੱਕ-ਅਯਾਮੀ ਐਰੇ ਦੁਆਰਾ ਦਰਸਾਇਆ ਜਾ ਸਕਦਾ ਹੈ।
ਇਹ ਵੀ ਵੇਖੋ
[ਸੋਧੋ]ਆਈਕਨ ਕੰਪਿਊਟਰ ਪ੍ਰੋਗਰਾਮਿੰਗ ਪੋਰਟਲ
- ਡਾਇਨਾਮਿਕ ਐਰੇ
- ਸਮਾਨਾਂਤਰ ਐਰੇ
- ਵੇਰੀਏਬਲ-ਲੰਬਾਈ ਐਰੇ
- ਬਿੱਟ ਐਰੇ
- ਐਰੇ ਕੱਟਣਾ
- ਆਫਸੈੱਟ (ਕੰਪਿਊਟਰ ਵਿਗਿਆਨ)
- ਕਤਾਰ ਅਤੇ ਕਾਲਮ - ਮੁੱਖ ਕ੍ਰਮ
- ਇਕ ਐਰੇ ਦੀ ਸਟਰਾਈਡ
ਹਵਾਲੇ
[ਸੋਧੋ]- ↑ Black, Paul E (2020-09). "DADS:". Gaithersburg, MD.
{{cite journal}}
: Check date values in:|date=
(help); Cite journal requires|journal=
(help) - ↑ 2.0 2.1 2.2 2.3 2.4 Andres, Bjoern; Koethe, Ullrich; Kroeger, Thorben; Helmstaedter, Moritz; Briggman, Kevin L.; Denk, Winfried; Hamprecht, Fred A. (2012-05). "3D segmentation of SBFSEM images of neuropil by a graphical model over supervoxel boundaries". Medical Image Analysis. 16 (4): 796–805. doi:10.1016/j.media.2011.11.004. ISSN 1361-8415.
{{cite journal}}
: Check date values in:|date=
(help) - ↑ 3.0 3.1 3.2 3.3 Garcia, Ronald; Lumsdaine, Andrew (2005-02). "MultiArray: a C++ library for generic programming with arrays". Software: Practice and Experience (in ਅੰਗਰੇਜ਼ੀ). 35 (2): 159–188. doi:10.1002/spe.630. ISSN 0038-0644.
{{cite journal}}
: Check date values in:|date=
(help) - ↑ The Book on Data Structures. 2002. p. 212. ISBN ISBN 0-595-24039-9, ISBN 978-0-595-24039-5..
{{cite book}}
:|first=
missing|last=
(help); Check|isbn=
value: invalid character (help) - ↑ 5.0 5.1 Veldhuizen, Todd L. (1998), Caromel, Denis; Oldehoeft, Rodney R.; Tholburn, Marydell (eds.), "Arrays in Blitz++", Computing in Object-Oriented Parallel Environments, vol. 1505, Berlin, Heidelberg: Springer Berlin Heidelberg, pp. 223–230, doi:10.1007/3-540-49372-7_24. isbn 978-3-540-65387-5.[dead link], ISBN 978-3-540-65387-5, retrieved 2024-08-01
{{citation}}
: Check|doi=
value (help) - ↑ Wrench, J. W. (1970). "Table errata: The art of computer programming, Vol. 2: Seminumerical algorithms (Addison-Wesley, Reading, Mass., 1969) by Donald E. Knuth". Mathematics of Computation. 24 (110): 504. doi:10.1090/s0025-5718-1970-0400642-2. ISSN 0025-5718.
- ↑ Levy, Henry M. (1984). Capability-based computer systems. Bedford, Mass: Digital Press. ISBN 978-0-932376-22-0.
- ↑ Mawst, L.J.; Botez, D.; Roth, T.J. "Stable, Diffraction-limited Beam From An Index-guided Phase-locked Array Supporting High-order Modes At Both The Array And Element Level". Conference Proceedings LEOS Lasers and Electro-Optics Society. IEEE. doi:10.1109/leos.1988.689878.