18-08-2010, 18:06
|
|
|
חבר מתאריך: 11.02.04
הודעות: 16,543
|
|
1 הדרך שלך להתבטא דוגלת בטיפשות. מה זה "חוכמולוג"?
(1\2)^5 הוא אכן מספר לכל דבר. זה מאוד טיפשי מצדך לתת את ההערה הזו, לא מדובר כאן באיזה משהו מעורך, אלה בשיווין של ממש, ואכן אפשר להוכיח בנקל, כי הטווח של פונקציה זו, הוא המספרים הטבעים. במקרים שבהם מציאת נוסחה ישירה זה אפשרי, הדבר עדיף אלפי מונים על נוסחת נסיגה, והופך את הפתרון לO(1)
בעוד שנוסחה רקורסיבית של פיבונאצי שממומשת לא בצורה טובה(בלי ממוריזישן, זה אסון של ממש).
אבל גם הממוש הטוב ביותר לא יהיה קרוב ליעילות של נוסחה ישירה.
2
ציטוט:
הן נעלות יותר כי הן דיקלרטיביות ולא אימפרטיביות. אתה מבטא בהן, מה אתה רוצה לעשות, ולא איך.
|
הן מאוד נעלות, הם פשוט העתיד של עולם התכנות..
כך נראה הקוד בC של מי שלא ממש הקדיש מחשבה לפני כן למה שהוא עושה, כך זה נראה בJAVA, בC, או בכל שפה אחרת(עם שינויים מינוריים).
קוד PHP:
public static void merge(int[] arr,int i, int j){
int[] tmp_arr = new int[j-i+1];
int sl=i,sr=(i+j)/2+1;
int k=0;
while ((sl<=(i+j)/2) && (sr<=j)){
if (arr[sl]<arr[sr]){
tmp_arr[k]=arr[sl];sl++;
}
else{
tmp_arr[k]=arr[sr];sr++;
}
k++;
}
while (sl<=(i+j)/2){
tmp_arr[k]=arr[sl];sl++;k++;
}
while (sr<=j){
tmp_arr[k]=arr[sr];sr++;k++;
}
k=0;
for(;i<=j;i++,k++){
arr[i]=tmp_arr[k];
}
}
public static void sort(int[] arr,int i,int j){
if (i==j) return;//nothing to sort, only one item..
sort(arr,i,(i+j)/2);
sort(arr,(i+j)/2+1,j);
merge(arr,i,j);
}
השאלה היא אחרת, מדוע אתה חושב שאני לא מכיר את אולגוריתם המיון מזוג?
אחת הדרכים בשביל להראות את נכנותו זה שימוש באינדוקציה.
נערך לאחרונה ע"י The_Equivocator בתאריך 18-08-2010 בשעה 18:31.
|