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

}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值