一、多项式的线性表表示
An(x)=anxn+an-1xn-1+...+a1x+a0 ,用线性表表示为:
A=(an,an-1,...,a1,a0)
若多项式的阶次很高,而系数ai不为零的很少,则这
种表示浪费空间。
可写为:
A(x)=amxem+am-1xem-1+...+a1xe1+a0xe0,用线性表表示为:
A=((am,em),(am-1,em-1),...,(a1,e1),(a0,e0))
二、多项式相加的方法
A+B=>C
1、线性表C置空
2、各取线性表A和B的第一个元素作为当前处理的元素
3、比较当前处理的元素的指数值,相等,系数相加若不为零追加到线性表C,各取线性表A和B的下一个元素作为当前处理的元素;若指数不相等,则把大的元素追加到线性表C,取该元素所在线性表的下一个元素作为当前处理的元素。
4、重复步骤3直到其中一个线性表处理完毕,再把另一个线性表的剩余元素追加到线性表C。
附注:要求用泛型,所有的算法都要自己写
n 有顺序表A和B,其元素均按从小到大的升序排列,编写一个算法将它们合并成一个顺序表C,要求C的元素也是从小到大的升序排列。
Random q = new Random();
int[] Aa = new int [3];
int[] Ba = new int[3];
int[] Ca = new int[Aa.Length + Ba.Length];
for (int i = 0; i < Aa.Length; i++)
{
Aa[i] = q.Next(1, 10);
}
for (int i = 0; i < Ba.Length; i++)
{
Ba[i] = q.Next();
}
Array.Sort(Aa);
// public void Sort()
// {
// int smallest;
// for (int i=0;i<Aa.Length-1;i++)
// smallest =i;
// for (int index=i+1;index <Aa.Length;index ++)
// if(Aa[i ]<Aa[smallest ])
// smallest =i ;
// }
//Aa.Sort();
Console.WriteLine("随机生成的数组Aa是:");
P(Aa);
Array.Sort(Ba);
Console.WriteLine("随机生成的数组Ba是:");
P(Ba);
for (int i = 0; i < Aa.Length; i++)
{
Ca[i] = Aa[i];
}
int x = Aa.Length;
for (int i = 0; i < Ba.Length; i++)
{
Ca[x] = Ba[i];
x++;
}
Console.WriteLine("合并后的数组Ca是:");
Array.Sort(Ca);
P(Ca);
}
static void P<E>(E[] a)
{
foreach (E element in a)
Console.Write(element + " ");
Console.WriteLine("\n");
在控制台应用程序中,可以用以上很简单的几十行代码 ,来完成这个题目,
但是,如果是要求用泛型呢?排序的算法要你自己写?怎样在Windows应用程序中实现呢?