题目:设计一个包含一个interface,三个class的Java 程序,用于完成数组排序排序任务。其中interface中包含一个sort() 方法。第一个class使用冒泡排序法实现interface的sort()方法;第二个class使用选择排序法实现interface的sort()方法;第三个类包含一个main函数,用于初始化原始数组,实例对象,通过interface调用sort()方法实现排序,打印排序结果。
建包、一个接口类和三个普通类
Java 实现过程
package default1;
public interface ss {
int temp=0;
public int[] sort(int[] arr);
}
package default1;
public class firstClass implements ss{
public int[] sort(int[] arr){
int temp=0;
for(int i = 0;i<arr.length-1;i++){
//内层循环,开始逐个比较
//如果我们发现前一个数比后一个数大,则交换
for(int j=0;j<arr.length-1-i;j++){ //冒泡比较是两两比较 所以循环次数是 arr.length-1;内部循环完成 就会有最后一位数字固定 所以 length-1-i
if (arr[j]>arr[j+1]) { //
//换位
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
return arr;
}
}
package default1;
public class secondClass implements ss{
private int temp=0;
public int[] sort(int[] arr){
for(int j = 0; j<arr.length-1;j++){
//最小值:假设第一个数就是最小的
int min = arr[j];
//记录最小数的下标的
int minIndex=j;
//内循环 从i=2开始 一直比到最后的元素,
for(int k=j+1;k<arr.length;k++){
//找到最小值
if (min>arr[k]) {
//修改最小
min=arr[k];
minIndex=k;
}
}
//当退出内层循环就找到这次的最小值
//交换位置
temp = arr[j];
arr[j]=arr[minIndex];
arr[minIndex]=temp;
}
return arr;
}
}
package default1;
public class thirdClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr={8,2,4,8,7,3,12,10};
ss s=new firstClass();
ss d=new secondClass();
prints(s.sort(arr));
prints(d.sort(arr));
}
private static void prints(int[] arr) {
for(int i = 0;i<arr.length;i++){
if (i==0) {
System.out.print(" [ "+arr[i]+",");
}else if (i==arr.length-1) {
System.out.print(arr[i]+" ]");
System.out.println();
}else {
System.out.print(arr[i]+",");
}
}
}
}