簡體   English   中英

C#-僅使用循環即可對結構數組進行排序,而無需使用任何內置函數

[英]C# - Sort array of struct without using any built-in function, just using loops

我有一個員工數據結構,它由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;

        }

更改您的排序功能以處理名字和姓氏。

你在哪里說

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

不用繼續,而是按姓氏對兩個條目進行排序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM