java 排序算法四例

其实有5种排序算法,目前理解了4个:

 

  1
  2class zyfsort {
  3    public static void main (String[] args) {
  4        int gohome[] = new int[]{12,7,54,21,1,4,65,76,34,9,3,6};    
  5        System.out.println("插入排序算法");
  6//        InsertionSort(gohome);
  7        System.out.println("-------------------------------------------");
  8        System.out.println("选择排序算法");
  9//        SelectSort(gohome);
 10        System.out.println("-------------------------------------------");
 11        System.out.println("冒泡排序算法");
 12//        BubbleSort(gohome);
 13        System.out.println("-------------------------------------------");
 14        gohome =QuickSort(gohome);
 15        
 16        for (int t=0; t<gohome.length;t++)
 17        {
 18            System.out.print(gohome[t]+"--");
 19        }
 
 20    }

 21    
 22    //插入排序算法
 23    public static void InsertionSort(int[] goal)
 24    {    
 25        for (int i = 1; i<goal.length; i++)
 26        {    int now = i;
 27            int frank = goal[i];            
 28            while (now>0 && goal[now-1<= frank)
 29            {
 30                goal[now]=goal[now-1];
 31                now--;            
 32            }

 33            goal[now]=frank;
 34            
 35        
 36        }
    
 37        
 38            
 39        for (int t=0; t<goal.length;t++)
 40        {
 41            System.out.print(goal[t]+"--");
 42        }

 43    }

 44    
 45    //选择排序算法    
 46    public static void SelectSort(int[] goal)
 47    {        
 48        int max;
 49        int stmp;    
 50        for (int i = 0; i<goal.length-1; i++)
 51        {
 52            max=i;
 53            for (int j = i+1; j<goal.length; j++)
 54                if(goal[j]>goal[max])
 55                    max=j;
 56                                    
 57            stmp = goal[i];
 58            goal[i]=goal[max];
 59            goal[max]=stmp;            
 60        
 61        }
    
 62        for (int t=0; t<goal.length;t++)
 63        {
 64            System.out.print(goal[t]+"--");
 65        }

 66            
 67    
 68    }

 69    
 70    //冒泡排序算法    
 71    public static void BubbleSort(int[] goal)
 72    {    int stmp;
 73        for (int i = 1; i< goal.length; i++)
 74        {
 75            for(int j=0; j<i;j++)
 76            {
 77                if(goal[i]>goal[j])
 78                {
 79                    stmp=goal[i];
 80                    goal[i]=goal[j];
 81                    goal[j]=stmp;    
 82                }
    
 83            }
    
 84    
 85        }

 86        for (int t=0; t<goal.length;t++)
 87        {
 88            System.out.print(goal[t]+"--");
 89        }

 90    }

 91    
 92    //快速排序算法
 93    public static int[] QuickSort(int[] number) {
 94      QuickSort(number, 0, number.length-1);
 95      return number ;
 96      }

 97    private static void QuickSort(int[] number,int left, int right) {
 98        int stmp;
 99      if(left < right) {
100          System.out.println(left+" | "+right+" | "+(left+right)/2);
101          int s = number[(left+right)/2];
102          int i = left - 1;
103          int j = right + 1;
104          while(true{
105                // 向右找
106                while(number[++i] > s) ;
107                  // 向左找
108                while(number[--j] < s) ;
109                  if(i >= j)
110                      break;             
111                stmp = number[i];
112                  number[i] = number[j];
113                  number[j] = stmp;              
114              }

115          QuickSort(number, left, i-1); // 对左边进行递回
116          QuickSort(number, j+1, right); // 对右边进行递回
117      }
     
118      }

119 }

120
posted @ 2008-10-24 13:17  玉米疯收  阅读(2847)  评论(3编辑  收藏  举报