package com.Arrays;
public interface ArraysSort {
public abstract int[] sort(int [] arr);
}
package com.Arrays;
/**
* @Author: 廾匸
* @Date: 2020/11/6 19:55
* @Description: 冒泡排序
* @version: 1.01
*/
public class Bubble implements ArraysSort{
@Override
/**
* @date: 2020/11/6 22:33
* @param arr
* @return: int[]
* @description: 重写排序算法
*/
public int[] sort(int [] arr) {
int j,temp;
boolean flag = false;
for (int i = 0; i <arr.length-1; i++) {
for (j = 0; j <arr.length-1-i ; j++) {
if(arr[j]>arr[j+1]){
flag = true;
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
if(!flag){
break;
}
}
return arr;
}
}
package com.Arrays;
/**
* @Author: 廾匸
* @Date: 2020/11/6 20:02
* @Description: 选择排序
* @version: 1.01
*/
public class Select implements ArraysSort {
@Override
public int[] sort(int[] arr) {
int minindex = 0;
int temp;
for (int i = 0; i < arr.length; i++) {
minindex = i;
for (int j = i+1; j < arr.length; j++) {
if(arr[minindex]>arr[j]){
temp = arr[minindex];
arr[minindex] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
}
package com.Arrays;
/**
* @Author: 廾匸
* @Date: 2020/11/6 20:06
* @Description: 插入排序
* @version: 1.01
*/
public class Insert implements ArraysSort {
@Override
public int[] sort(int[] arr) {
int temp = 0;
int j;
for (int i = 0; i <arr.length ; i++) {
temp = arr[i];
for (j = i-1; j >= 0; j--) {
if(arr[j]>temp){
arr[j+1] = arr[j];
}else{
break;
}
}
arr[j+1] = temp;
}
return arr;
}
}
package com.Arrays;
/**
* @Author: 廾匸
* @Date: 2020/11/6 20:17
* @Description: 电脑 执行类
* @version: 1.01
*/
public class Com {
private ArraysSort arraysSort;
private int [] arr;
public Com(ArraysSort arraysSort) {
this.arraysSort = arraysSort;
}
public Com() {
}
public Com(int[] arr) {
this.arr = arr;
}
public int[] getArr() {
return arr;
}
public void setArr(int[] arr) {
this.arr = arr;
}
public ArraysSort getArraysSort() {
return arraysSort;
}
public void setArraysSort(ArraysSort arraysSort) {
this.arraysSort = arraysSort;
}
/**
* @date: 2020/11/6 22:34
* @param arr 传入一个数组
* @return: void
* @description: 电脑调用排序方法
*/
public void sorts(int [] arr){
arr = arraysSort.sort(arr);
for(int i:arr){
System.out.print(i+" ");
}
}
}
package com.Arrays;
/**
* @Author: 廾匸
* @Date: 2020/11/6 20:10
* @Description: 排序测试类
* @version: 1.01
*/
public class SortTest {
public static void main (String[] args){
int [] arr = {3,9,4,3,96,15,72,68,16,0};
Com com = new Com(arr);
ArraysSort bubble = new Bubble();
ArraysSort select = new Select();
ArraysSort insert = new Insert();
com.setArraysSort(bubble);
System.out.println("冒泡排序");
com.sorts(arr);
com.setArraysSort(select);
System.out.println("\n选择排序");
com.sorts(arr);
com.setArraysSort(insert);
System.out.println("\n插入排序");
com.sorts(arr);
}
}
使用策略模式的设计方式来实现对数组的排序,提供两种具体的实施策略,冒泡排序法和选择排序法
最新推荐文章于 2023-04-23 22:42:04 发布