מערך (מבנה נתונים)

מערך
סיבוכיות מקום וזמן
ממוצע במקרה הגרוע
זיכרון:
O(n) O(n)
חיפוש:
O(log n)\O(n)‎[א] O(log n)\O(n)‎[א]
הכנסה:
O(1)\O(n)‎[ב] O(1)\O(n)‎[ג]
הוצאה:
O(1)\O(n)‎[ב] O(1)\O(n)‎[ג]

במדעי המחשב, מערך (Array) הוא אחד ממבני הנתונים הפשוטים ביותר: מערך הוא אוסף פריטים שניתן לגשת אליהם בצורה ישירה באמצעות אינדקס.

תכונות המערך

באופן עקרוני, מערך הוא בעצם מקרה ספציפי של מילון בו המפתחות הם מספרים טבעיים או תווים, וסיבוכיות גישה ישירה לכל נתון בודד באוסף לפי אינדקס היא קבועה (). ולכן הוא סוג של מבנה נתונים מופשט. עם זאת, מערכים הם טיפוס נתונים פרימיטיבי ברוב שפות התכנות (האימפרטיביות) ולכן כשמדברים על מערך מתכוונים לרוב למימוש נפוץ כלשהו שלו.

תכונה נוספת של המבנה היא דרישות הזיכרון שלו – מבנה הנתונים דורש בדיוק את הזיכרון הנדרש עבור הנתונים עצמם, ובכך הוא החסכוני מבין כל מבני הנתונים.

למערך שני חסרונות בולטים שקשורים למבנה הסטאטי שלו:

  1. הראשון שבהם הוא חוסר הגמישות שבו: קשה למחוק איברים ממערך תוך שמשאירים את האיברים הנותרים סמוכים זה לזה, שכן אם נמחק את אחד האיברים נצטרך להעביר את כל האיברים שאחריו מקום אחד אחורה בזיכרון, פעולה שהיא בסיבוכיות , כאשר הוא מספר התאים שיש להזיז.
  2. כמו כן, אין זה פשוט להוסיף למערך איברים חדשים. ייתכן שתאי הזיכרון שאחרי המקום האחרון במערך כבר נתפסו למטרה אחרת, ולפיכך כדי להגדיל את המערך יש להעתיק את כולו מחדש לרצף תאים פנויים במספר הנדרש. אומנם, ניתן להראות שהעלות המשוערכת של הוספת תאים חדשים בדרך חכמה (על פי רוב, הכפלת המערך פי שניים בכל פעם שנדרשים להגדיל אותו) לא תעלה על .

מימוש בתכנות

בתכנות מערכים ממומשים בדרך כלל על ידי קטע רציף של זיכרון אשר מחולק בין כל הנתונים באוסף. למשתנה המסמל את הרצף זה יש שם יחיד, וכל אחד מהנתונים נקרא איבר של המערך. אל כל איבר באוסף מתייחסים באמצעות שם המערך ואינדקס של הערך (לרוב מספרו הסידורי של האיבר בתוך האוסף).

ישנן שתי שיטות מקובלות להגדרה של מיקומי האיברים במערך: מרחק מתחילת המערך, ומספור הערך במערך. בשיטה הראשונה, המיון מתבצע לפי המרחק של הערך מהערך הראשון במערך, כך שהערך הראשון במערך מקבל מיקום 0, הערך השני – מיקום 1, והערך ה--י – את המיקום ה-. בשיטה השנייה, מספור הערך במערך, המיון מתבצע לפי מספר הערך במערך, כך הערך הראשון יהיה במיקום 1, הערך השני במיקום 2, והערך ה--י – במיקום ה-.

השיטה הראשונה מייצגת באופן ברור יותר את המימוש של מערך כגוש זיכרון רצוף, ומהווה למעשה את הדרך בה המחשב מתייחס למערך. השיטה השנייה מייצגת באופן יותר ברור את מיקום הערכים כפי שמקובל בשפת אדם, ויותר פשוטה להבנה.

בשפת Pascal ממומש מיון הערכים במערך בדרך השנייה (זאת אומרת, הערך הראשון במערך יקבל מען 1). בשפת C לעומת זאת משתמשים בשיטה הראשונה.

דוגמה

נניח שרוצים לאחסן את הרשימה של המספרים הריבועיים {1,4,9} בזיכרון המחשב. יש להגדיר מערך שיכונה בשם כלשהו, למשל square, כמערך שיכול להכיל שלושה מספרים שלמים. ולהציב:

square[0]=1
square[1]=4
square[2]=9

כאן אנו מציגים דרך סטנדרטית לגישה למערכים: שם המערך נכתב ראשון, ואחריו, בסוגריים מרובעים, נכתב האינדקס של האיבר שאת ערכו אנו רוצים לשנות. נשים לב כי במקרה זה, לאיבר הראשון במערך יש את האינדקס 0. זוהי בחירה שרירותית – בשפות תכנות מסוימות (דוגמת C) זה כך, ובשפות אחרות זה אחרת.

דרך גישה מסורבלת יותר למערכים, שבאסמבלר היא היחידה האפשרית, היא באמצעות שימוש במצביעים לתאי זיכרון. אין הבדל של ממש בין השיטות: הביטוי square[0] מתורגם בפועל לכתובת הזיכרון בה מאוחסן הנתון. עם זאת במטריצות שימוש כזה עשוי להיות יעיל משמעותית.

תכונות המערך בשפות תכנות

למערך ישנם כמה חסרונות שדורשות התייחסות בעבודה עם המבנה במהלך תכנות:

  • אם מספר האיברים אשר יוכנסו למערך לא ידוע מראש, יכול להיווצר מצב שמערך שהוגדר יהיה קטן מדי ותהיה דרישה להגדילו. פעילות כזאת תדרוש, לעיתים, העתקת כל הנתונים הקיימים למקום אחר שממנו אפשר להגדיל את הרצף בזיכרון, דבר שמכביד מבחינת ביצועי התוכנה. שפות תכנות מסוימות מאפשרות טיפוסים מובנים שמבצעים את ההגדלה הדינאמית (כדוגמת Visual Basic, הטיפוס הפרימיטיבי list בשפת Python, וכדומה), ושפות אחרות דורשות מהמתכנת לבצע את הפעולה בפירוש, תוך הגדרה של גודל החדש.
  • במקרים שבהם זקוקים למערך דליל (מערך בעל טווח ערכים גדול במיוחד, אף שרוב תאיו לא ינוצלו), אין זה מן הנמנע שבזיכרון הפנוי במחשב לא יימצא כלל מקום לרצף התאים שנתבקש, והקצאת המערך לא תתאפשר, וגם אם תתאפשר הקצאת המערך תגרום לבזבוז רב של זיכרון. למשל: אם משתמשים במערך כדי לייצג את כל תושבי מדינת ישראל, כך שהאינדקס של כל איבר במערך יהיה מספר תעודת הזהות של התושב, יהיה מספר עצום של תאים () שרק חלק זעום מהם יהיה תפוס. לבעיות מטיפוס כזה מתאימים מבני נתונים אחרים, כדוגמת טבלת גיבוב או מטריצה דלילה.

מטריצות

נוסף למערך הרגיל שמייצג למעשה וקטור, ניתן ליצור גם מערך דו־ממדי השקול למטריצה ואף מערך רב ממדי. הייצוג הפנימי המקובל למערך דו־ממדי הוא אחסון שורות המטריצה ברצף בזיכרון המחשב, שורה אחר שורה. כאשר מבקשים לפנות למידע תוך התבססות על שני הממדים של האיבר שאותו מבקשים, המערך הדו־ממדי מיוצג על ידי מערך חד־ממדי, שכל אחד מאבריו הוא מערך חד־ממדי בעצמו. למשל, אם שם המערך הדו הממדי הוא והמשתמש רוצה את האיבר בשורה השנייה ובעמודה החמישית, הוא יבקש את האיבר (דבר השקול לבקשת האיבר החמישי במערך ששמור במקום השני במערך החד־ממדי ).

הסדר של המטריצה שונה משפת תכנות אחת לשנייה. לרוב הסידור הוא סידור לפי שורות: קודם התאים של השורה הראשונה ולאחר מכן התאים של השורה השנייה וכך הלאה. בחלק משפות התכנות כגון Fortran הסידור הוא לפי עמודות, כלומר קודם העמודה הראשונה, אחר השנייה וכך הלאה.

באמצעות מערך רב ממדי ניתן לייצג טנזור כללי, בעל מספר ממדים כלשהו.

שימושים עיקריים

ישנם שימושים רבים מאוד למבנה הנתונים הזה, ולהלן העיקריים שבהם:

אלטרנטיבה מקובלת למערך במקרה של מספר נתונים משתנה היא רשימה מקושרת, המאופיינת בגמישות בהוספה ובמחיקה של איברים.

קישורים חיצוניים

ויקישיתוף מדיה וקבצים בנושא מערך בוויקישיתוף
  • מערך, באתר MathWorld (באנגלית)

ביאורים

  1. ^ 1 2 O(log n)‎ – במערך ממוין בעזרת חיפוש בינארי
  2. ^ 1 2 O(1)‎ – במערך דינמי לא ממוין
  3. ^ 1 2 O(1)‎ – ניתוח לשיעורין במערך דינמי לא ממוין

הערות שוליים


Read other articles:

У Вікіпедії є статті про інші значення цього терміна: Старе Село. Музей архітектури і побуту«Старе село» Музей «Державної народної школи» 48°26′01″ пн. ш. 23°43′45″ сх. д. / 48.433730000027772178° пн. ш. 23.72940000002777694° сх. д. / 48.433730000027772178; 23.72940000002777694Координ�...

 

 

Кыска-кюй Направление башкирская и татарская народная музыка Истоки народная музыка Время и место возникновения XVIII век Годы расцвета XX век Родственные Узун-кюй Кыска-кюй (башк. ҡыҫҡа көй, тат. кыска көй от ҡыҫҡа — короткий, көй — напев, мелодия) — жанр башкирског�...

 

 

Tuan Kebawah Duli Yang Maha Mulia Paduka Seri Sultan MustainbillahSULTAN BANJAR IVTempat Pemakaman Sultan Mustain BillahSeri Sultan MustainbillahSULTAN BANJAR IVBerkuasa1595-1642Penobatan1595PendahuluSultan Hidayatullah 01 1570-1595PenerusSultan 'Inayatullah 1642-1645PUTRA MAHKOTABerkuasa1570-1595Penobatan1570Informasi pribadiKelahiranRaden SenapatiPemakamanTabukan, Tangkas, Kesultanan Banjar[1][2]WangsaDinasti BanjarmasinNama lengkap1. Goesti Katjil[3]/Raden Kushil ...

American businessman and politician (born 1971) For other people named Thomas Massie, see Thomas Massie (disambiguation). Thomas MassieMember of the U.S. House of Representativesfrom Kentucky's 4th districtIncumbentAssumed office November 13, 2012Preceded byGeoff DavisJudge-Executive of Lewis CountyIn officeJanuary 3, 2011 – June 30, 2012Preceded bySteve ApplegateSucceeded byJohn Collins Personal detailsBornThomas Harold Massie (1971-01-13) January 13, 1971 (age...

 

 

The 2004 term of the Supreme Court of the United States began October 4, 2004, and concluded October 3, 2005. The table illustrates which opinion was filed by each justice in each case and which justices joined each opinion. Table key Delivered the Court's opinion Joined the Court's opinion Filed a concurrence Joined a concurrence Filed a dissent Joined a dissent Filed a concurrence/dissent Joined a concurrence/dissent Did not participate in the decision Decisions that do not note an argumen...

 

 

Tự ĐứcKaisar VietnamKaisar Tự Đức (1829–1883)Berkuasa1847–1883PendahuluThiệu TrịPenerusDục ĐứcKematian17 Juli 1883(1883-07-17) (umur 53)PemakamanKhiêm LăngWangsaDinasti NguyễnNama lengkapNguyễn Phúc Hồng Nhậm (阮福洪任)Nguyễn Phúc Thì (阮福時)Nama periodeNama anumertaKaisar Thể thiên Hanh vận Chí thành Đạt hiếu Thể kiện Đôn nhân Khiêm cung Minh lược Duệ văn AnhNama kuilDực Tông (翼宗)AyahThiệu TrịIbuTừ Dụ...

FK Chmel BlšanyCalcio Segni distintivi Uniformi di gara Casa Trasferta Colori sociali Dati societari Città Blšany Nazione  Rep. Ceca Confederazione UEFA Federazione ČMFS Campionato 5. Liga Fondazione 1946 Presidente Robert Janek Allenatore Luboš Zákostelský Stadio Městský Stadium(2,300 posti) Sito web www.fkchmelblsany.cz Palmarès Si invita a seguire il modello di voce L'FK Chmel Blšany è una società calcistica ceca con sede nella città di Blšany. Oggi milita nella 5. Lig...

 

 

Kejatuhan SoehartoBagian dari Reformasi Indonesia Searah jarum jam, dari atas: Presiden Indonesia Soeharto menyampaikan pengunduran diri dari jabatannya Para perusuh membakar perabot kantor di jalan-jalan Jakarta Mahasiswa memprotes pemerintah Mahasiswa Universitas Trisakti dan polisi pada bentrok Tanggal4–21 Mei 1998LokasiIndonesiaHasilKejatuhan Orde Baru Presiden Soeharto mengundurkan diri Peresmian B.J. Habibie sebagai presiden Pembentukan Kabinet Reformasi Pembangunan Referendum kemerde...

 

 

GilgitCityKota PakistanPemerintahan • Wali kotaFaqeer MuhammadKetinggian1.500 m (4,900 ft)Populasi (1998)216.760Zona waktuUTC+5 (PST)Postal code15100 [1]Kode area telepon+92 5811Situs webGilgit information Buddha's Picture at Kargah Gilgit ( Urdu: گلگت, Hindi: गिलगित) adalah ibu kota Gilgit-Baltistan, Pakistan . Kota Gilgit membentuk daerah Gilgit. Nama kunonya adalah Sargin, kemudian dikenali sebagai Gilit, dan masih disebut Gilit atau Sargin-G...

French astronaut (1949–2023) Jean-Jacques FavierBorn(1949-04-13)13 April 1949Kehl, Baden, GermanyDied19 March 2023(2023-03-19) (aged 73)Albi, FranceNationalityFrenchAlma materGrenoble Institute of TechnologyOccupationEngineerAwards Space careerCNES astronautTime in space16d 21h 48mSelection1985 CNES Group 2MissionsSTS-78Mission insignia Jean-Jacques Favier (13 April 1949 – 19 March 2023) was a German-born French engineer and a CNES astronaut who flew aboard the STS-78 NASA Space...

 

 

Pemilihan Umum Presiden Indonesia 2004199920095 Juli 2004 (putaran pertama)20 September 2004 (putaran kedua)Kandidat Pasangan calon Partai Koalisi 60,62%Susilo Bambang YudhoyonoJusuf Kalla Demokrat Koalisi Kerakyatan Suara populer: 69.266.350     39,38%Megawati SoekarnoputriHasyim Muzadi PDI-P Koalisi Kebangsaan Suara populer: 44.990.704     Hasil suara Peta persebaran suara Hasil putaran kedua: calon dengan mayoritas suara di setiap provinsi. SBY-JK: biru;...

 

 

Peta infrastruktur dan tata guna lahan di Komune Vayres.  = Kawasan perkotaan  = Lahan subur  = Padang rumput  = Lahan pertanaman campuran  = Hutan  = Vegetasi perdu  = Lahan basah  = Anak sungaiVayres, Haute-Vienne merupakan sebuah komune di departemen Haute-Vienne di Prancis. Lihat pula Komune di departemen Haute-Vienne Referensi INSEE lbsKomune di departemen Haute-Vienne Aixe-sur-Vienne Ambazac Arnac-la-Poste Augne Aureil Azat-le-Ris Balledent La Baz...

† Египтопитек Реконструкция внешнего вида египтопитека Научная классификация Домен:ЭукариотыЦарство:ЖивотныеПодцарство:ЭуметазоиБез ранга:Двусторонне-симметричныеБез ранга:ВторичноротыеТип:ХордовыеПодтип:ПозвоночныеИнфратип:ЧелюстноротыеНадкласс:Четвероно...

 

 

Electoral ward in Bath, United Kingdom For other uses, see Westmoreland (disambiguation). Human settlement in EnglandWestmorelandWestmorelandLocation within SomersetPopulation6,469 (2011)[1]OS grid referenceST744644Unitary authorityBath and North East SomersetCeremonial countySomersetRegionSouth WestCountryEnglandSovereign stateUnited KingdomPost townBATHPostcode districtBA2Dialling code01225PoliceAvon and SomersetFireAvonAmbulanceSouth Western ...

 

 

American football player (born 1993) American football player Marcus MariotaMariota with the Atlanta Falcons in 2022No. 0 – Washington CommandersPosition:QuarterbackPersonal informationBorn: (1993-10-30) October 30, 1993 (age 30)Honolulu, Hawaii, U.S.Height:6 ft 4 in (1.93 m)Weight:222 lb (101 kg)Career informationHigh school:Saint Louis (Honolulu)College:Oregon (2011–2014)NFL draft:2015 / Round: 1 / Pick: 2Career history Tennessee Titans ...

1915 strategic withdrawal by Russian forces on the Eastern Front of World War I For other uses, see Great Retreat (disambiguation). Great RetreatPart of the Eastern Front of World War IRussian withdrawal in 1915.Date13 July – 19 September 1915LocationAustrian Galicia and Lodomeria, Congress Poland and Western KraiResult Central Powers victoryTerritorialchanges Central Powers capture Congress Poland, Kingdom of Galicia and LodomeriaBelligerents  German Empire Austria-Hungary Russia...

 

 

Telephone area code for all of New Hampshire Area code 603 in a 1956 map, covering the whole state. Area code 603 is the sole area code for the U.S. state of New Hampshire in the North American Numbering Plan (NANP). It was created as one of the original 86 numbering plan areas in October 1947. In 2011, area code 603 was said to be nearing exhaustion and a second area code for New Hampshire was expected to be activated by 2013 as a statewide overlay plan.[1] As a result of changes in ...

 

 

Football clubASEC MimosasFull nameAssociation Sportive des Employés de Commerce MimosasNickname(s)Les Mimos (The Mimos)[1] Les Jaunes et Noirs (The Yellow and Blacks)Founded29 April 1948; 76 years ago (1948-04-29)GroundStade Robert ChamprouxCapacity10,000ChairmanCédric KouaméManagerJulien ChevalierLeagueLigue 12022–23Ligue 1, 1st of 16 (champions)WebsiteClub website Home colours Away colours Current season ASEC Mimosas (short for Association Sportive des Employ...

British etymologist and writer (born 1942) This biography of a living person needs additional citations for verification. Please help by adding reliable sources. Contentious material about living persons that is unsourced or poorly sourced must be removed immediately from the article and its talk page, especially if potentially libelous.Find sources: Michael Quinion – news · newspapers · books · scholar · JSTOR (April 2018) (Learn how and when to remov...

 

 

  Corpo libero maschileMelbourne 1956 Informazioni generaliLuogoWest Melbourne Stadium, Melbourne Periodo3 - 7 dicembre 1956 Partecipanti63 da 18 nazioni Podio Valentin Muratov  Unione Sovietica Viktor Čukarin  Unione Sovietica Nobuyuki Aihara  Giappone William Thoresson  Svezia Edizione precedente e successiva Helsinki 1952 Roma 1960 Voce principale: Ginnastica ai Giochi della XVI Olimpiade. Ginnastica a Melbourne 1956 Concorso a squadre   uomini   don...