今天复习了一下一些简单的排序算法,贴出来给大家批评批评,顺便散一下分
还望各位指正一下
public class Sorts{
//冒泡排序
public static int[] bubble(int array[]){
int arr[] = array.clone();
for(int i=0;i <arr.length;i++)
for(int j=arr.length-1;j> i;j--)
if(arr[i]> arr[j])
swap(arr,i,j);
return arr;
}
//选择排序
public static int[] select(int array[]){
int arr[] = array.clone();
for(int i=0,k=0;i <arr.length;i++){
k = i;
for(int j=arr.length-1;j> i;j--)
if(arr[k]> arr[j])
k = j;
swap(arr,i,k);
}
return arr;
}
//插入排序
public static int[] insert(int array[]){
int arr[] = array.clone();
for(int i=0;i <arr.length;i++)
for(int j=i;j> 0;j--)
if(arr[j] <arr[j-1])
swap(arr,j,j-1);
else
break;
return arr;
}
//归并排序
public static int[] merge(int array[]){
int arr[] = array.clone();
mergeSort(arr,0,arr.length-1,new int[arr.length]);
return arr;
}
private static void mergeSort(int arr[],int start,int end,int temp[]){
if(start> =end)
return;
int middle = start+(end-start)/2;
mergeSort(arr,start,middle,temp);
mergeSort(arr,middle+1,end,temp);
for(int i=start,j=start,k=middle+1;i <=end;i++)
if(j <=middle && k <=end)
if(arr[j]> arr[k])
temp[i] = arr[k++];
else
temp[i] = arr[j++];
else if(j <=middle)