C#-实现对版本号的自动排序

前提是版本号都是Vxx.xx.xx.xx....的格式,xx代表数字,不能有除V以外其他字母

记录两种比较方法,一种是vs自带的Version类,一种是自己写的,根据比较结果,使用冒泡排序进行排序。

先给出一堆乱序的版本号:

List<string> verList;
private void InitVersion()
{
    verList = new List<string>();
    verList.Add("V1.2.32.1");
    verList.Add("V1.2.2.12");
    verList.Add("V1.4.3.2");
    verList.Add("V1.1.33.21");
    verList.Add("V1.0.3.2");
    verList.Add("V1.2.6.14");
    verList.Add("V1.3.3.2");
    verList.Add("V1.1.4.2");
}

Version方式】使用冒泡排序进行排序:

private void SortVersion()
{
    for (int i = 0; i < verList.Count - 1; i++)
    {
        for (int j = 0; j < verList.Count - 1 - i; j++)
        {
            Version v1 = new Version(verList[j].Replace("V", ""));
            Version v2 = new Version(verList[j + 1].Replace("V", ""));
            if (v1.CompareTo(v2) > 0)
            {
                string temp = verList[j];
                verList[j] = verList[j + 1];
                verList[j + 1] = temp;
            }
        }
    }
}

自己写的方法】比较两个版本大小,返回判断结果:

private bool IsV2UpToV1(string v1, string v2)
{
    string[] str1 = v1.Replace("V", "").Split('.');
    string[] str2 = v2.Replace("V", "").Split('.');
    bool isHigh = false;
    for (int j = 0; j < Math.Max(str1.Length, str2.Length); j++)
    {
        if (str2.Length <= j)
            break;
        if (str1.Length <= j )
        {
            isHigh = true;
            break;
        }
        if (Convert.ToInt16(str2[j]) == Convert.ToInt16(str1[j]))
            continue;
        isHigh = Convert.ToInt16(str2[j]) > Convert.ToInt16(str1[j]);
        break;
    }
    return isHigh;
}

使用冒泡排序进行排序:

private void SortVersion()
{
    for (int i = 0; i < verList.Count - 1; i++)
    {
        for (int j = 0; j < verList.Count - 1 - i; j++)
        {
            if (!IsV2UpToV1(verList[j], verList[j + 1]))
            {
                string temp = verList[j];
                verList[j] = verList[j + 1];
                verList[j + 1] = temp;
            }
        }
    }
}

运行程序:

 

  

  

posted @ 2023-07-26 16:55  [春风十里]  阅读(91)  评论(0编辑  收藏  举报