java 排序算法四例

lgl669 2009-07-20
  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 }
jiaofei3385140 2009-11-02
看不明白,能不能再写篇文章是关于每个步骤的详细解释,谢谢了
lgl669 2009-11-02
jiaofei3385140 写道
看不明白,能不能再写篇文章是关于每个步骤的详细解释,谢谢了

这几个排序比较简单,你最好看看数据结构的书,代码一下就能看懂了。呵呵
204_lwa 2012-07-04
理解思想 不看其他人的代码 把每种算法都实现一次 再去对比实现细节
这样学习算法的人飘过
其实JDK里就有这些算法的源码了 额。。相信很少人能实现得比这些大师们还优化吧
Global site tag (gtag.js) - Google Analytics