日期:2014-05-20  浏览次数:20666 次

今天复习了一下一些简单的排序算法,贴出来给大家批评批评,顺便散一下分
还望各位指正一下

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)