(1)写一个final参数类M,包括比较次数、交换次数、探测次数属性,并重写构造器和toString方法。 (2)写一个抽象类A,其中包括要排序的数据。提供三个final方法,分别完成比较、探测、交换操作的同时,正确改变私有的M类对象成员的相关属性。并提供一个虚方法doSort,同时提供一个final方法sort(先设置M对象初值,然后调用doSort方法,返回M对象引用) (3)写三个采用不同方法排序的A类的派生类A1,A2,A3 (4)写一个测试类作为主类,分别生成A1,A2,A3的对象并调用sort方法,显示三个方法在排序时候的性能参数。