Skip to content

1707004426冯小涛 #30

@xiaoshanzha

Description

@xiaoshanzha
public class BaseSort {
    public void sort (int []a){
        System.out.println("排序算法");
    }
}

public class SelectSort extends BaseSort {
    @Override
    public void sort(int[] a) {
        for (int i = 0; i <a.length - 1; i++) {
            for (int j = 1+i; j <a.length ; j++) {
                if(a[i]>a[j])
                {
                    int temp = a[i];
                    a[i] = a[j];
                    a[j] = temp;
                }
            }
        }
        System.out.print("选择排序:");
        for (int i = 0; i < a.length ; i++) {
            System.out.print(a[i]+" ");
        }
        System.out.println(" ");
    }
}
public class InsertSort extends BaseSort {
    public void sort(int[] a){
        for (int i = 1; i <a.length - 1; i++)
        {
            int temp = a[i],j;
            for( j = i - 1;j >= 0&&temp<a[j];j--)
            {
                a[j+1] = a[j];
            }
            a[j+1] = temp;
        }
        System.out.print("插入排序:");
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i]+" ");
        }
        System.out.println(" ");
    }
}
public class QuivkSort extends BaseSort {
    public void sort(int[] a) {
        sort1(a,0,a.length-1);
        System.out.print("快速排序:");
        for(int i = 0;i < a.length;i++)
        {
            System.out.print(a[i]+" ");
        }
    }
        void sort1(int []arr,int start ,int end)
        {
            int key = arr[start];
            int low = start;
            int high = end;
            while(low < high)
            {
                while(low < high && arr[high] >= key)
                {
                    high--;
                }
                if(low < high)
                {
                    arr[low++] = arr[high];
                }
                while(low < high && arr[low] <= key)
                {
                    low  ++;
                }
                if(low < high)
                {
                    arr[high--] = arr[low];
                }
                arr[low] = key;
            }
            int m = low;
            if(start < m-1)
            {
                sort1(arr,start,m-1);
            }
            if(low+1 < end)
                sort1(arr,m+1,end);
        }
}
import java.util.Scanner;

public class Factory {
    private  BaseSort sort;
    //依赖注入
    public void setSort(BaseSort sort){
        this.sort = sort;
    }
    public void  doSort(int []a){
        sort.sort(a);
    }
}
import java.util.Scanner;

public class Test {
        public static void main(String[] args){
            Scanner input = new Scanner(System.in);
            int []a = new int [5];
            for (int i = 0;i < 5; i++){
                a[i] = input.nextInt();
            }
           //选择排序
            Factory factory = new Factory();
            BaseSort select_sort = new SelectSort();
            factory.setSort(select_sort);
            factory.doSort(a);
            //插入排序
            Factory factory2 = new Factory();
            BaseSort insert_sort = new InsertSort();
            factory2.setSort(insert_sort);
            factory2.doSort(a);
            //快速排序
            Factory factory3 = new Factory();
            BaseSort quick_sort = new QuivkSort();
            factory3.setSort(quick_sort);
            factory3.doSort(a);
        }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions