Java/מערכים/תרגילים: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
Johnny Zoo (שיחה | תרומות)
מאין תקציר עריכה
Johnny Zoo (שיחה | תרומות)
אין תקציר עריכה
שורה 103:
</div>
}}
 
{{אתגר|האם ניתן לבנות מנגנון מהיר יותר שיבצע את אותה המשימה? האם אפשר לבנות מנגנון מהיר יותר לחיפוש במערך, כאשר יודעים כי המערך מסודר בסדר עולה או יורד?}}
 
===מיון של מערך===
גם התוכנית הזו תשתמש במערך של מספרים אקראיים, אך למען הנוחות נקטין את גודל המערך ל-10. כתבו תוכנית שתיצור מערך כזה ותדפיס אותו, ולאחר מכן תסדר אותו בסדר עולה ותדפיס אותו כשהוא ממויין. לדוגמה, אם נוצר המערך 10 6 15 4, אחרי פעולת המיון המערך יהיה 4 6 10 15. הערה: כדאי לקחת פסק זמן למחשבה ולתכנון לפני כתיבת התוכנית. קיימות דרכים רבות מאוד ליצור תוכנית כזו, חלקן יעילות יותר וחלקן פחות. נסו למצוא דרך שתעבוד בכל מצב, גם אם אינה היעילה ביותר.
{{מוסתר|פתרון|2=
<div style="text-align:left; direction:ltr;">
<pre>
public class MyArray {
 
public static void main(String[] args) {
int[] arr = new int[10];
for(int i=0; i<arr.length; i++)
arr[i] = (int) (1 + Math.random()*100);
for(int i=0; i<arr.length; i++)
System.out.print(arr[i]+" ");
System.out.println();
int x = arr.length;
boolean swapped;
// Sort the array using bubble sort
do {
x--;
swapped = false;
for(int j=0; j<x; j++) {
// Switch locations between arr[j] and arr[j+1]
if(arr[j]>arr[j+1]) {
swapped = true;
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
} while(swapped);
for(int i=0; i<arr.length; i++)
System.out.print(arr[i]+" ");
System.out.println();
}
}
</pre>
</div>
 
פתרון זה משתמש ב[[w:he:מיון בועות|מיון בועות]], שיטה פשוטה אך לא יעילה במיוחד למיון מערך.
}}
 
נעיר כאן שחיפוש ומיון במערך הן בעיות ידועות בתחום של מדעי המחשב, ושיטות רבות פותחו כדי לבצע זאת. קיימים כלים יעילים יותר למיון של מערך, אך חלקם דורשים ידע נוסף והבנה מעמיקה יותר בנושאים שונים. למעוניינים: [[w:he:קטגוריה:אלגוריתמי מיון|אלגוריתמי מיון]], [[w:he:חיפוש בינארי|חיפוש מהיר במערך ממויין]].