נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: מיון רשימה ב #C

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
אלינור
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 09 February 2008 בשעה 12:46 | IP רשוּם
ציטוט אלינור

האם מישהו יכול לכתוב קוד של מיון רשימה ב #C?
חזרה לתחילת העמוד הצג את כרטיס החבר של אלינור חפש הודעות אחרות של אלינור בקר בדף הבית של אלינור
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 09 February 2008 בשעה 13:39 | IP רשוּם
ציטוט shoshan

את מוזמנת לקרוא על IComparable ו-IComparable<T>

קוד:
using System;
using System.Collections.Generic;

public class Class
{
    List<Student> students = new List<Student>();

    // AddStudent()
    // RemoveStudent()
    // Count

    public void Sort()
    {
        students.Sort(new Comparison<Student>(compare));
    }

    private int compare(Student s1, Student s2)
    {
        int result = s1.AveregeGrade.CompareTo(s2.AveregeGrade);
        if (result != 0)
            return result;
        return s1.Name.CompareTo(s2.Name);
    }
}

public class Student
    // optional if you want the sorting logics inside student
    // : IComparable<Student>
    // and than to use Sort without a Comparison<Student>
{
    public string Name;
    public int AveregeGrade;

    public Student(string name, int averegeGrade)
    {
        Name = name;
        AveregeGrade = averegeGrade;
    }

    public Student(string name)
        : this(name, 100)
    {
    }

    #region optional, if you want the sorting logic to be inside student:
    public static bool operator ==(Student s1, Student s2)
    {
        return s1.Name == s2.Name && s1.AveregeGrade == s2.AveregeGrade;
    }

    public static bool operator !=(Student s1, Student s2)
    {
        return !(s1 == s2);
    }

    public static bool operator <(Student s1, Student s2)
    {
        return s1.AveregeGrade < s2.AveregeGrade || s1.Name < s2.Name;
    }

    public static bool operator >(Student s1, Student s2)
    {
        return s1.AveregeGrade > s1.AveregeGrade || s1.Name > s2.Name;
    }

    public int IComparable<Student>.CompareTo(Student other)
    {
        if (this == other)
            return 0;
        if (this > other)
            return 1;
        // else if this < other then:
        return -1;
    }
    #endregion
}



__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
אלינור
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 09 February 2008 בשעה 13:42 | IP רשוּם
ציטוט אלינור

אני מעוניינת במיון רשימה שמכילה מספרים שלמים בלבד. בלי תורשה ובלי CONPERABLE תודה!!

class Intnode

}

private int info;

private Intnode next;


{

חזרה לתחילת העמוד הצג את כרטיס החבר של אלינור חפש הודעות אחרות של אלינור בקר בדף הבית של אלינור
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 09 February 2008 בשעה 13:50 | IP רשוּם
ציטוט shoshan

הממ...טוב...היה נחמד לציין שאת לא משתמשת ברשימה של .net ושזאת רשימה מקושרת...

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

האלגוריתם שלו הוא כזה:

P מקבל את תחילת הממויינת.

כל עוד האיבר אחרי P שונה מסוף הרשימה וגם הערך אחרי P קטן מהערך הנוכחי
    P מקודם לאיבר הבא.

ואז מכניסים לאיבר אחרי P את הערך (או במילים אחרות במקום ה-P את הערך).


__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
berzniz
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 27 January 2008
משתמש: מנותק/ת
הודעות: 22
נשלח בתאריך: 09 February 2008 בשעה 14:59 | IP רשוּם
ציטוט berzniz

הייתי מציע לבצע זאת כך:

1. העתקת הערכים מהרשימה למערך חדש.

2. ביצוע מיון על המערך(mergesort מומלץ).

3. העתקה של הערכים בחזרה(מהמערך לרשימה).

זה קל לביצוע ויעיל באותה המידה(חסום ב-n*logn).



__________________
תכנות
לימוד Java
אקורדים
חזרה לתחילת העמוד הצג את כרטיס החבר של berzniz חפש הודעות אחרות של berzniz בקר בדף הבית של berzniz
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה