策略模式

在这里插入图片描述

public class Client {
    public static void main(String[] args) {
        /*
        策略模式
         */
        int[] arr = {1, 4, 6, 2, 5, 3, 7, 10, 9};
        int[] result;
        ArrayHandler arrayHandler = new ArrayHandler();

        Sort sort = new QuickSort();

        arrayHandler.setSortObj(sort);
        result = arrayHandler.sort(arr);

        for (int i : result) {
            System.out.print(i + " ,");
        }
    }
}
public class ArrayHandler {
    private  Sort sortObj;

    public int[] sort(int[] arr){
        sortObj.sort(arr);
        return arr;
    }

    public void setSortObj(Sort sortObj){
        this.sortObj = sortObj;
    }
}
public interface Sort {
    int[] sort(int[] arr);
}
public class BubbleSort implements Sort{
    @Override
    public int[] sort(int[] arr) {
        int len=arr.length;
        for(int i=0;i<len;i++) {
            for(int j=i+1;j<len;j++) {
                int temp;
                if(arr[i]>arr[j]) {
                    temp=arr[j];
                    arr[j]=arr[i];
                    arr[i]=temp;
                }
            }
        }
        System.out.println("冒泡排序");
        return arr;
    }
}
public class InsertionSort implements Sort{
    @Override
    public int[] sort(int[] arr) {
        int len=arr.length;
        for(int i=1;i<len;i++) {
            int j;
            int temp=arr[i];
            for(j=i;j>0;j--) {
                if(arr[j-1]>temp) {
                    arr[j]=arr[j-1];

                }else break;
            }
            arr[j]=temp;
        }
        System.out.println("插入排序");
        return arr;
    }
}
public class SelectionSort implements Sort{
    @Override
    public int[] sort(int[] arr) {
        int len=arr.length;
        int temp;
        for(int i=0;i<len;i++) {
            temp=arr[i];
            int j;
            int smallestLocation=i;
            for(j=i+1;j<len;j++) {
                if(arr[j]<temp) {
                    temp=arr[j];
                    smallestLocation=j;
                }
            }
            arr[smallestLocation]=arr[i];
            arr[i]=temp;
        }
        System.out.println("选择排序");
        return arr;
    }
}

public class QuickSort implements Sort {
    @Override
    public int[] sort(int[] arr) {
        System.out.println("快速排序");
        sort(arr,0,arr.length-1);
        return arr;
    }

    public void sort(int[] arr, int p, int r) {
        int q;
        if(p<r) {
            q=partition(arr,p,r);
            sort(arr,p,q-1);
            sort(arr,q+1,r);
        }
    }

    public int partition(int[] a, int p, int r) {
        int x=a[r];
        int j=p-1;
        for(int i=p;i<=r-1;i++) {
            if(a[i]<=x) {
                j++;
                swap(a,j,i);
            }
        }
        swap(a,j+1,r);
        return j+1;
    }

    public void swap(int[] a, int i, int j) {
        int t = a[i];
        a[i] = a[j];
        a[j] = t;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值