תקציר שימושי מחשב, סמסטר ב תשעג, גיא בלשר, מבני נתונים
המטרה: לכתוב פונקציות להוספה, למחיקה, לחיפוש ולמיון במערך. נחלק את הפעולות לשני מקרים: המערך אינו ממוין והמערך ממוין.
מערך שאינו ממוין
נגדיר איזשהו מערך:
;[v=[79,100,31,5,84
ונבצע עליו את הפעולות הבאות:
הוספה
(function [u] = add2array (v,k הפונקציה מוסיפה איבר k למערך v ומחזירה u % ;u=v ;u(end+1)=k end
מחיקה
אפשרות 1:
(function [u] = deleteFromArray (v,p הפונקציה מוחקת את האיבר ה־p־י במערך ומחזירה u % ;(u=zeros(length(v)-1,1 ;(u(1:p-1)=v(1:p-1 ;(u(p:length(v)-1)=v(p+1:end end
אפשרות 2:
(function [u] = deleteFromArray2 (v,p הפונקציה מוחקת את האיבר ה־p־י במערך ומחזירה u % ;(u=zeros(length(v)-1,1 for i=1:p-1 ;(u(i)=v(i end (for i=p+1:length(v ;(u(i-1)=v(i end end
חיפוש
(function [p] = findInArray (v,x הפונקציה מחזירה את המקום במערך שבו x נמצא או אפס אם x אינו במערך % ;k=1 ;p=0 ;(n=length(v while p==0 && k<=n if v(k)==x ;p=k else ;k=k+1 end end end
מערך ממוין
כעת נניח שיש לנו מערך ממוין v, למשל מהקטן לגדול.
מחיקה
בדיוק כמו במערך שאינו ממוין.
חיפוש
ישנן שתי שיטות חיפוש: חיפוש בינארי ואריה במדבר.
חיפוש בינארי:
(function [p] = binarySearch (v,x ;(n=length(v ;L=1 ;H=n while L<H-1 ;(M=floor((L+H)/2 (if x<v(M ;H=M else ;L=M end end (if x==v(H ;p=H else ;p=L end end
מספר הפעולות בחיפוש בינארי: [math]\displaystyle{ \log_2 n }[/math]
הוספה
אם x קטן מ־(v(1, נכניס אותו בהתחלה. אחרת נחפש את x ונכניס אותו אחרי L.
מיון פשוט
ראשית, נכתוב פונקציית עזר:
(function [m,p] = findSmallest (v,k הפונקציה מוצאת את המקום p ואת הערך m הנמצא במערך v והמינימלי מהמקום ה־k־י והלאה % ;p=k ;(m=v(k ;(n=length(v for i=k+1:n if v(i)<m ;p=i ;(m=v(i end end end
כעת, נכתוב את התוכנית למיון:
for i=1:n-1 ;(m,p]=findSmallest(v,i] ;(v(p)=v(i ;v(i)=m end