本帖最后由 jiangsheng 于 2010-10-24 21:47:21 编辑

解决方案 »

  1.   

    你把名字和序号存储成一个结构
    然后写一个简单的排序方法 比如说冒泡
    当然是泛型方法 比大小的时候使用object.equls
    最后再重载equles就行了
      

  2.   

    sorry 我没有看清楚题目用两个一维数组分别存放5个学生的学号和姓名
      

  3.   


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;namespace test
    {
        class Program
        {
            static void Main(string[] args)
            {
                    int[] intid = { 2, 4, 5, 1, 3 };
                    string[] strname = { "Smith", "Jihn", "Mary", "Cherr", "Tomn"};
                    SortId(ref intid, ref strname);
                    Console.WriteLine("id array:");
                    ShowArray(intid);
                    Console.WriteLine("name array:");
                    ShowArray(strname);
                    SortName(ref intid, ref strname);
                    Console.WriteLine("id array:");
                    ShowArray(intid);
                    Console.WriteLine("name array:");
                    ShowArray(strname);
                    Console.ReadKey();
            }
            public static void SortId(ref int[] idArr, ref string[] NameArr)
            {
                //简单的冒泡
                int temp;
                string tmpStr;
                for (int outer = idArr.Length-1; outer >= 1; outer--)
                {
                    for (int inner = 0; inner <= outer - 1; inner++)
                    {
                        if ((int)idArr[inner] > idArr[inner + 1])
                        {
                            temp = idArr[inner];
                            idArr[inner] = idArr[inner + 1];
                            idArr[inner + 1] = temp;                        //在执行id排序时调换顺序需要对name也调换顺序
                            tmpStr = NameArr[inner];
                            NameArr[inner] = NameArr[inner + 1];
                            NameArr[inner + 1] = tmpStr;
                        }
                    }
                }        }
            public static void SortName(ref int[] idArr, ref string[] NameArr)
            {
                //简单的冒泡
                int temp;
                string tmpStr;
                for (int outer = NameArr.Length-1; outer >= 1; outer--)
                {
                    for (int inner = 0; inner <= outer - 1; inner++)
                    {
                        if (NameArr[inner].CompareTo(NameArr[inner + 1])> 0)
                        {
                            tmpStr = NameArr[inner];
                            NameArr[inner] = NameArr[inner + 1];
                            NameArr[inner + 1] = tmpStr;                        //在执行name排序时调换顺序需要对id也调换顺序
                            temp = idArr[inner];
                            idArr[inner] = idArr[inner + 1];
                            idArr[inner + 1] = temp;
                        }
                    }
                }        }        public static void ShowArray(Array arr)
            {
                for (int i = 0; i < arr.Length;i++ )
                {
                    Console.WriteLine(arr.GetValue(i));
                }
            }
        }
    }
    自己看去 我打了几次回答把我累得。。
      

  4.   

    先谢谢你,可是我还有一个问题就是。我运行后为什么id和name里的成员都是单独一行的?万分感谢
      

  5.   

    Dictionary<int,string> 保存
    Dictionary<int, string> dic = new Dictionary<int, string>();
    var p= from pair in dic
      orderby pair.Key
      select pair;
    dic.OrderBy(c => c.Value);
      

  6.   

    public static void Test()
    {
        //2 4 5 1 3
        //Smith Jihn Mary Cherr Tomn    Student[] data = 
        { 
            new Student("Smith ", 2), 
            new Student("Jihn ", 4),
            new Student("Mary", 5),
            new Student("Cherr", 1), 
            new Student("Tomn", 3) 
        };
        Array.Sort(data, (a, b) => a.ID - b.ID);//根据id排序
        Console.WriteLine("根据id排序");
        foreach (Student s in data) Console.WriteLine(s.Name + "-" + s.ID.ToString());
        Array.Sort(data, (a, b) => string.Compare(a.Name, b.Name, true));//根据名字排序
        Console.WriteLine("根据名字排序");
        foreach (Student s in data) Console.WriteLine(s.Name + "-" + s.ID.ToString());
    }public class Student
    {
        public string Name;
        public int ID;
        public Student(string name, int id) { Name = name; ID = id; }
    }
    输出
    根据id排序
    Cherr-1
    Smith -2
    Tomn-3
    Jihn -4
    Mary-5
    根据名字排序
    Cherr-1
    Jihn -4
    Mary-5
    Smith -2
    Tomn-3
      

  7.   

            string[] name = new string[5] { "Smith", "Jihn", "Mary", "Cherr", "Tomn" };
            int[] id = new int[5] { 2, 4, 5, 1, 3 };        Dictionary<string, int> stu = new Dictionary<string, int>();
            for (int i = 0; i < 5; i++)
            {
                stu.Add(name[i], id[i]);
            }        var sortById = stu.OrderBy(c => c.Value);
            foreach (var temp in sortById)
            {
                Console.WriteLine(temp.Value+":"+temp.Key);
            }
            Console.WriteLine("------我是分隔线---------");
            var sortByName = stu.OrderBy(c => c.Key);
            foreach (var temp in sortByName)
            {
                Console.WriteLine(temp.Value+":"+temp.Key);
            }