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;
}
}