Insertion Sorting c#

徘徊边缘 提交于 2019-12-02 14:33:13

Try like this...

public void InsertionSort()
{
    for (int i = 0; i < Count; i++)
    {
        int j = i;
        While(j > 0)
        {
            Student cur = Attendees[j];
            Student sel = Attendees[j-1];
            if (cur.CompareTo(Sel) < 0)
            {
                Student temp = cur;
                cur = sel;
                sel = temp;
                j--
            }
            else
                break;
        }
    }
}
public void InsertionSort()
{
    for (int i = 1; i < Count; i++) // Iterate beginning at 1, because we assume that 0 is already sorted
    {
        for (int j = i; j > 0; j--) // Iterate backwards, starting from 'i'
        {
            Student cur = Attendees[j - 1];
            Student tbs = Attendees[j]; // 'tbs' == "to be sorted"
            if (cur.CompareTo(tbs) < 0) // usually, classes that implement 'CompareTo()' also implement 'operator <()', 'operator >()' and 'operator ==()', so you could have just written 'cur < tbs'
            {
                Student temp = Attendees[j];
                Attendees[j] = Attendees[j - 1];
                Attendees[j - 1] = temp;
            }
            else
                break; // since 'tbs' is no longer > 'cur', it is part of our sorted list. We don't need to sort that particular 'tbs' any further
        }
    }
}

Keep in mind, that this algorithm sorts your list in descending order.

int[] newarr = {2,1,5,3,7,6}; int a, b; for (int i = 1; i < newarr.Length; i++) { a = newarr[i]; b = i - 1; while(b>=0 && newarr[b]>a) { newarr[b+1] = newarr[b]; b=b-1; } newarr[b+1] = a; }

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!