关于#c++#的题目,请各位专家解答!

12.*【题目】若数组a中的n个元素已按升序排列,现将一个新数x插入到数组a中,插入后数组a的元素仍然保持升序。使用的插入排序算法是:从数组a的最后一个元素开始,依次向前扫描数组元素,若a[i]大于x,则将a[i] 放入a[i+1](后移一个位置),并继续向前扫描,直到找到某个a[i]小于或等于x,将x赋值到a[i+1]元素中,此时完成插入排序工作。编写程序时要考虑初始时,数组是空数组(即数组中没有元素),插入第一个元素时,要做特殊处理。试建立一个类InsSort,完成插入排序工作。
具体要求如下:
(1)私有数据成员
int a[100] :存放排好序的整数序列。
int n :数组实际元素个数。
(2)公有成员函数
InsSort (int b[ ], int size) :构造函数,用参数b初始化a数组,用参数size初始化n,size的缺省值是0。
void insert(int x) :将x插入到数组a中。
void show( ) :输出数组元素个数及数组各元素值。
(3)在主函数中完成对该类的测试。定义数组int b[100],其初值是:{ 1,3,5 }。定义一个InsSort类的对象arr,用数组b及其元素的个数初始化该对象。定义数组int c[100],其初值是:{ 0,1,2,3,5,8,10 }。然后循环将数组c中的所有元素依次插入到对象arr的成员数组a中。最后输出对象arr中的全体数据成员。程序正确运行后,应输出:
number=10
0, 1, 1, 2, 3, 3, 5, 5, 8, 10

你最好自己先搞一搞,哪一部分不会或者没把握再具体问这一块,不要扔个大题目啊

还有如果是空数组,插入后还要排序,那排序算法在哪里写?怎样写?