有下面几个人
姓名 成绩 年龄
张三 88 20
李四 79 21
王五 90 23
赵六 90 22
................这些数据不是放在数据库中的,用程序来实现
要求:
先按成绩排名,如果成绩相同的话按年龄排名。不知道这个程序怎么写,请各位给个答案。小弟回去琢磨琢磨,谢谢了。。
姓名 成绩 年龄
张三 88 20
李四 79 21
王五 90 23
赵六 90 22
................这些数据不是放在数据库中的,用程序来实现
要求:
先按成绩排名,如果成绩相同的话按年龄排名。不知道这个程序怎么写,请各位给个答案。小弟回去琢磨琢磨,谢谢了。。
解决方案 »
- 对于映射的存储过程方法,“System.Void”不是有效的返回类型
- XNA3.0语句的问题
- 循环问题,速度给分!!!!
- 关于C#中的非托管资源
- 在网络映射驱动器中运行.net程序出错
- TreeView怎么与DataSet绑定,当DataSet修改后,TreeView也相应改变,就想DataGridView绑定DataSet一样
- 关于读取远程xml 捆绑GridView的问题
- datagrid 中数据已绑定怎么再将数据放到dataset
- 整一程序,在服务器上运行。得到所有访问的url,哪位兄弟给点提示
- winform 中的TextBox的换行问题
- web或winfrom如何直接与网页交互?高分等了
- winform中如何提取指定网页中的类似<a href="news.asp?id=3"的超连接
public class People
{
public string Name; //名子
public int Score; //成绩
public int Age; //年龄
}2.建立了个数组, 个数为成员的总个数count个.
People[] p = new People[count];
然后按年龄排序p3.新建一个数组
People[] p1 = new People[count];
然后做一个循环,从p中按顺序读取最大的,然后放到新数组中,再删除原来的数.最终得到的p1就是要求数组.
填充在GIRDVIEW,用代码改他的排序
{
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main(string[] args)
{
ArrayList objs = new ArrayList(); objs.Add( new Person("张三", 88, 20) );
objs.Add( new Person("李四", 79, 21) );
objs.Add( new Person("王五", 90, 23) );
objs.Add( new Person("赵六", 90, 22) ); foreach( Person p in objs )
Console.WriteLine(p.ToString()); objs.Sort(new PersonComparer()); Console.WriteLine("After sorting..."); foreach( Person p in objs )
Console.WriteLine(p.ToString()); Console.ReadLine();
}
} class PersonComparer : IComparer
{
#region IComparer Members public int Compare(object x, object y)
{
Person xp = x as Person;
if( xp == null )
throw new ArgumentException(); Person yp = y as Person;
if( yp == null )
throw new ArgumentException(); int gradesResult = xp.Grades - yp.Grades; if( gradesResult != 0 ) return gradesResult; return xp.Age - yp.Age;
} #endregion
}
class Person
{
public Person(string name, int grades, int age)
{
this.name = name;
this.grades = grades;
this.age = age;
} private string name;
private int grades;
private int age; public override string ToString()
{
return Name + " " + Grades + " " + Age;
}
}
{
public Person(string name, int grades, int age)
{
this.name = name;
this.grades = grades;
this.age = age;
} private string name;
private int grades;
private int age; public override string ToString()
{
return Name + " " + Grades + " " + Age;
} public string Name
{
get
{
return name;
}
}
public int Grades
{
get
{
return grades;
}
} public int Age
{
get
{
return age;
}
} } class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
Person[] objs=new Person[4];
objs[0]=new Person("张三", 88, 20);
objs[1]=new Person("李四", 79, 21);
objs[2]=new Person("王五", 90, 23);
objs[3]=new Person("赵六", 90, 22); foreach( Person p in objs )
Console.WriteLine(p.ToString());
Console.WriteLine("---------------------");
//---------------------
Order(objs); //---------------------
foreach( Person p in objs )
Console.WriteLine(p.ToString());
} static void Order(Person[] T)
{
Person Temp;
int i=0;
int j=0;
for(i=0;i<T.Length;i++)
{
for(j=i+1;j<T.Length;j++)
{
if (T[i].Grades <T[j].Grades)
{
Temp=new Person(T[i].Name,T[i].Grades,T[i].Age );
T[i]=new Person(T[j].Name,T[j].Grades,T[j].Age);
T[j]=new Person(Temp.Name,Temp.Grades,Temp.Age); }
else if((T[i].Grades ==T[j].Grades) && (T[i].Age >T[j].Age))
{
Temp=new Person(T[i].Name,T[i].Grades,T[i].Age);
T[i]=new Person(T[j].Name,T[j].Grades,T[j].Age);
T[j]=new Person(Temp.Name,Temp.Grades,Temp.Age);
}
}
}
}
}
const string C_NAME = "NAME";
const string C_SCORE = "SCORE";
const string C_AGE = "AGE";
private void button1_Click(object sender, EventArgs e)
{
DataTable table = new DataTable();
DataColumn column = table.Columns.Add();
column.DataType = typeof(string);
column.ColumnName = C_NAME;
column = table.Columns.Add();
column.DataType = typeof(int);
column.ColumnName = C_SCORE;
column = table.Columns.Add();
column.DataType = typeof(int);
column.ColumnName = C_AGE; AddNewRow(table, "张三", 88, 20);
AddNewRow(table, "李四", 79, 21);
AddNewRow(table, "王五", 90, 23);
AddNewRow(table, "赵六", 90, 22); DataRow[] rows = table.Select("", string.Format("{0}, {1}", C_SCORE, C_AGE)); string sFormat = "{0} {1} {2}";
string line;
foreach (DataRow row in rows)
{
line = string.Format(sFormat,
Convert.ToString(row[C_NAME]),
Convert.ToString(row[C_SCORE]),
Convert.ToString(row[C_AGE]));
Console.WriteLine(line);
} } private void AddNewRow(DataTable table, string sName, int iScore, int iAge)
{
DataRow row = table.NewRow();
row[C_NAME] = sName;
row[C_SCORE] = iScore;
row[C_AGE] = iAge;
table.Rows.Add(row);
}
DataColumn dc1 =new DataColumn("name",typeof(string));
DataColumn dc2 =new DataColumn("arch",typeof(System.Int32));
DataColumn dc3=new DataColumn("age",typeof(System.Int32));
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc3);
DataRow dr;
for(int i=0;i<5;i++)
{
dr=dt.NewRow();
dr[0]="zhang"+i.ToString() ;
dr[1]=80+i;
dr[2]=20+i;
dt.Rows.Add(dr);
}
DataView dv=dt.DefaultView;
dv.Sort = "arch,age";
dTable.Columns.Add(new DataColumn("Point",System.Type.GetType("System.Int32")));
dTable.Columns.Add(new DataColumn("Age",typeof(System.Int32))); DataRow dRow; //1
dRow = dTable.NewRow();
dRow["Name"] = "zhangyy";
dRow["Point"] = 60;
dRow["Age"] = 20;
dTable.Rows.Add(dRow);
//2
dRow = dTable.NewRow();
dRow["Name"] = "fengww";
dRow["Point"] = 80;
dRow["Age"] = 26;
dTable.Rows.Add(dRow);
//3
dRow = dTable.NewRow();
dRow["Name"] = "zhangxh";
dRow["Point"] = 50;
dRow["Age"] = 26;
dTable.Rows.Add(dRow);
//4
dRow = dTable.NewRow();
dRow["Name"] = "hezhe";
dRow["Point"] = 56;
dRow["Age"] = 23;
dTable.Rows.Add(dRow);
//5
dRow = dTable.NewRow();
dRow["Name"] = "jiangzm";
dRow["Point"] = 50;
dRow["Age"] = 20;
dTable.Rows.Add(dRow);
DataView dView = dTable.DefaultView;
dView.Sort = "Point , Age";
for(int i = 0; i < dView.Count; i ++)
{
Console.WriteLine(dView[i].Row["Name"].ToString()+" "+dView[i].Row["Point"].ToString()
+" "+dView[i].Row["Age"].ToString());
} Console.ReadLine();
如果要自己写排序算法,那么只能考虑稳定排序
比如选择,冒泡,归并
DataColumn dc;
dc=new DataColumn("name",typeof(string));
dt.Columns.Add(dc);
dc = new DataColumn("scroe", typeof(Int32));
dt.Columns.Add(dc);
dc = new DataColumn("age", typeof(Int32));
dt.Columns.Add(dc);
DataRow dr;
dr = dt.NewRow();
dr["name"]="张三";
dr["scroe"] = 88;
dr["age"] = 20;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["name"] = "李四";
dr["scroe"] = 79;
dr["age"] = 21;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["name"] = "王五";
dr["scroe"] = 90;
dr["age"] = 22;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["name"] = "赵六";
dr["scroe"] = 90;
dr["age"] = 21;
dt.Rows.Add(dr);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
ds.Tables[0].DefaultView.Sort = "scroe,age";
this.GV.DataSource = ds;
this.GV.DataBind();
/*姓名 成绩 年龄
张三 88 20
李四 79 21
王五 90 23
赵六 90 22
*/
create table TestTable(Name varchar(10),grade int ,age int)
insert into TestTable select '张三','88','20'
union all select '李四','79','21'
union all select '王五','90','23'
union all select '赵六','90','22'
select * from TestTable order by grade asc,age asc
dv.Sort = "scroe,age";
建立DataTable,數據加入操作!
它定义了一个Select方法,可以用如下方法
DataTable dt = ...
dt.Select("条件","排序(例:aa DESC)");