sort 算法小结

package sort;

public interface ISortNumber {
     /**
      * 对整型数组按升序排序
      * @param intArray   待排序的整型数组
      * @return 按升序排序后的数组
      */
     public int[] sortASC(int[] intArray);
}
package sort;
/**
 * 冒泡排序法
 */
public class BubbleSort implements ISortNumber {

     public int[] sortASC(int[] intArray) {
           if(intArray==null){
                return null;
           }
           //因为Java的参数传递是采用引用传值方式,因为在排序的过程中,需要对改变数组,
           //所以,为了保证输入参数的值不变,这里采用了数组的clone方法,直接克隆一个数组。
           int [] srcDatas=(int[])intArray.clone();
           boolean changedPosition=true;
           int comparedTimes=0;
           int maxComparedTimes = srcDatas.length - 1;

          while((comparedTimes<maxComparedTimes)&&(changedPosition)){
                for(int i=0; i<(maxComparedTimes-comparedTimes);i++){
                     changedPosition=false;
                     if(srcDatas[i]>srcDatas[i+1]){
                           swap(srcDatas, i, i+1);
                           changedPosition=true;
                     }
                }
                comparedTimes++;
           }


           return  srcDatas;
     }

     /**
      * 交换数组中下标为src和dest的值
      * @param data  数组
      * @param src   源下标
      * @param dest  目标下标
      */

     public void swap(int[] data,int src,int dest){
           int temp=data[src];
           data[src]=data[dest];
           data[dest]=temp;
     }

}

package sort;

public class SelectSort implements ISortNumber{
     /**
      * 选择排序
      */
     public int[] sortASC(int[] intArray) {
           if(intArray==null){
                return null;
           }
           int[] srcDatas=intArray.clone();
           int size=srcDatas.length;

           for(int i=0 ;i<size;i++){

                for(int j=i;j<size;j++){
                     if(srcDatas[i]>srcDatas[j]){
                           swap(srcDatas, i, j);
                     }
                }

           }

           return srcDatas;
     }

     public void  swap(int[] srcData,int src,int dest){
           int temp=srcData[src];
           srcData[src]=srcData[dest];
           srcData[dest]=temp;
     }

}
package sort;

public class SelectSort implements ISortNumber{
     /**
      * 选择排序
      */
     public int[] sortASC(int[] intArray) {
           if(intArray==null){
                return null;
           }
           int[] srcDatas=intArray.clone();
           int size=srcDatas.length;

           for(int i=0 ;i<size;i++){

                for(int j=i;j<size;j++){
                     if(srcDatas[i]>srcDatas[j]){
                           swap(srcDatas, i, j);
                     }
                }

           }

           return srcDatas;
     }

     public void  swap(int[] srcData,int src,int dest){
           int temp=srcData[src];
           srcData[src]=srcData[dest];
           srcData[dest]=temp;
     }

}
点赞