C# - 在不使用任何内置函数的情况下对struct数组进行排序,只使用循环

时间:2016-08-02 15:30:40

标签: c# arrays sorting struct

我有一个员工数据结构,它有2个名字和姓氏的分隔字段。我想按名字排序这个数组,如果2个名字是相同的,那么按姓氏排序。我已经按照名字对数组进行了排序,但是在2个名字相同的情况下仍然不能使用姓氏。我想实现这种排序而不使用.Net中的任何内置函数,例如array.sort()我只想使用循环。

public struct EmployeeData
        {
            public char sex;
            public int age;
            public int id1;
            public int id2;
            public int id3;
            public string fname;
            public string lname;
            public int seniority;
        }
    static EmployeeData[] SortByFirstName(EmployeeData[] empdata)
        {
            int min = 0;
            EmployeeData temp;
            for (int i = 0; i < empdata.Length; i++)
            {
                for (int j = i+1; j < empdata.Length; j++)
                {
                    if (empdata[i].fname.Length < empdata[j].fname.Length)
                    {
                        min = empdata[i].fname.Length;
                    }
                    else
                    {
                        min = empdata[j].fname.Length;
                    }

                    for (int k = 0; k < min; k++)
                    {
                        if (empdata[i].fname[k] > empdata[j].fname[k])
                        {
                            temp = empdata[i];
                            empdata[i] = empdata[j];
                            empdata[j] = temp;
                            break;
                        }
                        else if (empdata[i].fname[k] == empdata[j].fname[k])
                        {
                            continue;
                        }
                        else
                        {
                            break;
                        }
                    }
                }
            }
            return empdata;

        }

1 个答案:

答案 0 :(得分:1)

更改排序功能以处理名字和姓氏。

你说的地方

else if (empdata[i].fname[k] == empdata[j].fname[k])
    {
         continue;
    }

不是继续,而是按姓氏对这两个条目进行排序。