java实现排序算法一

//冒泡排序初级版

  1. publi cclass bubbleSort {  
  2.   
  3. public void bubbleSort(int [] arr){    
  4.     int temp=0;    
  5.     for(int i=0;i<a.length;i++){  
  6.   
  7.        for(int j=i+1;j<a.length;j++){  
  8.   
  9.        if(a[i]>a[j]){  
  10.   
  11.            temp=a[i];  
  12.   
  13.            a[i]=a[j];  
  14.   
  15.            a[j]=temp;  
  16.   
  17.        }    
  18.     }  
  19. }  

//正宗冒泡排序

 static void bubble_sort(int[] unsorted)
        {
            for (int i = 0; i < unsorted.Length; i++)
            {
                for (int j = i; j < unsorted.Length; j++)
                {
                    if (unsorted[j] > unsorted[j+1])
                    {
                        int temp = unsorted[j];
                        unsorted[j] = unsorted[j+1];
                        unsorted[j+1] = temp;
                    }
                }
            }
        }
//冒泡排序优化版


  1. public static void bubbleSort4(int[] arr){  
  2.         boolean flag = true;  
  3.          
  4.        for(int i=0;i<arr.length&& flag;i++){
  5.             flag = false;  
  6.             for(int j=i;j<arr.length-1;j++){  
  7.                 if(arr[j] >arr[j+1]){  
  8.                     //数据交换  
  9.                    swap(arr,j,j+1); 
  10.                     //设置标志位  
  11.                     flag = true;  
  12.                 }  
  13.             }  
  14.           
  15.         }  
  16.         
  17.     }  


/**
      * description : 快速排序
      * @autor kwzhang
      * modify :2012-6-20
      *
      * @param pData
      * @param left
      * @param right
      * @return
      */
     static  void  quicksort( int  n[],  int  left,  int  right) {
         int  dp;
         if  (left < right) {
             dp = partition(n, left, right);
             quicksort(n, left, dp -  1 );
             quicksort(n, dp +  1 , right);
         }
     }
 
     static  int  partition( int  n[],  int  left,  int  right) {
         int  pivot = n[left];
         while  (left < right) {
             while  (left < right && n[right] >= pivot)
                 right--;
             if  (left < right)
                 n[left++] = n[right];
             while  (left < right && n[left] <= pivot)
                 left++;
             if  (left < right)
                 n[right--] = n[left];
         }
         n[left] = pivot;
         return  left;
     }



选择排序

  1. public class ChoiceSort {  
  2.   
  3.     public static void _choiceSort(Integer[] a) {  
  4.         if (a == null || a.length <= 0) {  
  5.             return;  
  6.         }  
  7.         for (int i = 0; i < a.length; i++) {  
  8.             int min = i; /* 将当前下标定义为最小值下标 */  
  9.   
  10.             for (int j = i + 1; j < a.length; j++) {  
  11.                 if (a[min] > a[j]) { /* 如果有小于当前最小值的关键字 */  
  12.                     min = j; /* 将此关键字的下标赋值给min */  
  13.                 }  
  14.             }  
  15.             if (i != min) {/* 若min不等于i,说明找到最小值,交换 */  
  16.                 int tmp = a[min];  
  17.                 a[min] = a[i];  
  18.                 a[i] = tmp;  
  19.             }  
  20.         }  
  21.     }  
  22. }  




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值