java 3种简单的排序

1.冒泡排序

public class TestSort{   
      
     public static void main(String args[]){  
        int a[]={5,4,9,8,7,6,0,1,3,2};  
        bubbleSort(a);             //静态方法中直接通过类名调用静态方法,或者通过对象去调用非静态的方法  
        for(int i=0;i<a.length;i++){  
           System.out.print(a[i]+" ");    
        }  
     }  
      
    public static void bubbleSort(int array[]){    
         int i,j,tmp;  
         for(i=1;i<array.length-1;i++){  
             for(j=array.length-1;j>=i;j--){  
                 if(array[j]<array[j-1]){  
                    tmp=array[j];  
                    array[j]=array[j-1];  
                    array[j-1]=tmp;  
                 }     
            }  
         }  
    }  
}  

2.插入排序

public class TestSort{
  public static void main(String args[]){
     int array[] = {7,3,19,40,4,7,1};
     insertSort(array);	 
     for(int i=0;i<array.length;i++){
   	System.out.print(array[i]+" ");	
     }
  }	
	
  public static void insertSort(int a[]){
     if(a!=null){
        for(int i=1;i<a.length;i++){
	   int tmp = a[i],j=i;
	   while(j>=1&&a[j-1]>tmp){
		a[j] = a[j-1];
	        j--;
	   }
	   a[j]=tmp; //每一个a[i]即tmp值,只要是小,就j--,一直把她护送到最小的位置
	}
     }
  }
}

3.选择排序

选择排序法的第一层循环从起始元素开始选到倒数第二个元素,主要是在每次进入的第二层循环之前,将外层循环的下标赋值给临时变量,接下来的第二层循环中,如果发现有比这个最小位置处的元素更小的元素,则将那个更小的元素的下标赋给临时变量,最后,在二层循环退出后,如果临时变量改变,则说明,有比当前外层循环位置更小的元素,需要将这两个元素交换.

public class TestSort{  
       public static void main(String args[]){  
          int array[] = {7,3,19,40,4,7,1};  
          selectSort(array);       
      for(int i=0;i<array.length;i++){  
        System.out.print(array[i]+" ");   
      }  
       }      
      
    public static void selectSort(int a[]){  
        int minIndex=0;  
        int temp=0;  
        if((a==null)||(a.length==0))  
             return;  
        for(int i=0;i<a.length-1;i++){  
           minIndex=i;    //将外层循环的下标赋值给临时变量  
           for(int j=i+1;j<a.length;j++){  
               if(a[j]<a[minIndex]){  
                     minIndex=j;  
                }     
           }  
           if(minIndex!=i){ //在二层循环退出后,如果临时变量改变,则说明有比当前外层循环位置更小的元素,需将这两个元素交换          
	       temp=a[i];  
	       a[i]=a[minIndex];  
	       a[minIndex]=temp;     
          }  
        }  
    }  
}  




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值