简单排序

package arithmetic;


import junit.framework.TestCase;

public class Simple extends TestCase{
     int[] array={8,10,5,12,9,22,3};
     /**
       * 冒泡排序
       * 效率O(N*N),比较N*N/2,交换N*N/4
       */
      public void testSimpleSort1(){
          for(int i=0;i<array.length-1;i++){
               for(int j=0;j<array.length-1-i;j++){
                   if(array[j]>array[j+1]){
                        int temp=array[j];
                        array[j]=array[j+1];
                        array[j+1]=temp;
                    }
              }
           }
          for(int i=0;i<array.length;i++){
               System.out.print(array[i]+" ");
          }
      }
      /**
        * 
        * 选择排序
        * 先假设i设置为min,遍历数组,index为  i的跟  i+1 到 arra.length的元素比较,
        * 谁的元素最小,标记下标,设置为min,最后判断若 i!=min,将最小的元素跟i交换
        * 效率O(N*N),比较N*N/2,交换<N
        */
       public void testSimpleSort2(){
             int min,out,in;
             for(out=0;out<array.length-1;out++){
                  min=out;
                  for(in=out+1;in<array.length;in++){
                       if(array[in]<array[min])
                                min=in;
                        }
                       if(min!=out){
                            int temp=array[out];
                            array[out]=array[min];
                            array[min]=temp;
                       }
                   }
            for(int i=0;i<array.length;i++){
                    System.out.print(array[i]+" ");
            }
        }
  
    /**
      * 插入排序
      * 假设数组部分是有序的,out标记第一个无序元素,保存到temp中,
      * in标记空位置,依次比较temp中的值和in-1的值,
      * 若in-1>temp,后移,直到遇到第一个比temp小的值,在其下一位插入
      * 效率O(N*N),比较N*N/4,交换N*N/4
      */
    public void testSimpleSort3(){
         int in,out;
         for(out=1;out<array.length;out++){
              int temp=array[out];
              in=out;
              while(in>0 && temp<array[in-1]){
                 array[in]=array[in-1];
                 in--;
              }
             array[in]=temp;
         }
        for(int i=0;i<array.length;i++){
           System.out.print(array[i]+" ");
         }
    }
}
    
 




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值