学java不久,是个大菜鸟,偶尔看到网上一些java源码如几个排序算法,还有一些解决实际问题如递归打靶的源码,觉得通过学习他人的优秀范例性代码是个不错的学习途径,但是网上这种代码很少,搜索java源码大多是整套网站,或者swing、awt示例,或者干脆就是jdk源码、开元框架源码等过深的内容,像上面的结构清晰注释详细的很少,请问大家应该怎样找这种代码供自己观摩学习呢?谢谢!

解决方案 »

  1.   

    GUI都可以不用学习的,j2ee和j2me都不需要界面的,基础的基础才是最重要的,能把api理解了就牛了,一些功能,试试怎样去实现
      

  2.   

    GUI都可以不用学习的,j2ee和j2me都不需要界面的,基础的基础才是最重要的,能把api理解了就牛了,一些功能,试试怎样去实现
      

  3.   

        是啊,不是要GUI和网站源码,像下面的排序,结构清晰注释详细,感觉挺好,但是这样的有详细说明并且能提供具体语境的代码很少,大家能说说有没有类似的代码可供学习呢?谢谢。/*
     * @(#)QSortAlgorithm.java 1.3   29 Feb 1996 James Gosling *
     *//**
     * A quick sort demonstration algorithm
     * SortAlgorithm.java
     *
     * @author James Gosling
     * @author Kevin A. Smith
     * @version  @(#)QSortAlgorithm.java 1.3, 29 Feb 1996
     */public class QSortAlgorithm extends SortAlgorithm 
    {
       /** This is a generic version of C.A.R Hoare's Quick Sort 
        * algorithm.  This will handle arrays that are already
        * sorted, and arrays with duplicate keys.<BR>
        *
        * If you think of a one dimensional array as going from
        * the lowest index on the left to the highest index on the right
        * then the parameters to this function are lowest index or
        * left and highest index or right.  The first time you call
        * this function it will be with the parameters 0, a.length - 1.
        *
        * @param a       an integer array
        * @param lo0     left boundary of array partition
        * @param hi0     right boundary of array partition
        */
       void QuickSort(int a[], int lo0, int hi0) throws Exception
       {
          int lo = lo0;
          int hi = hi0;
          int mid;      // pause for redraw
          pause(lo, hi);
          if ( hi0 > lo0)
          {         /* Arbitrarily establishing partition element as the midpoint of
              * the array.
              */
             mid = a[ ( lo0 + hi0 ) / 2 ];         // loop through the array until indices cross
             while( lo <= hi )
             {
                /* find the first element that is greater than or equal to 
                 * the partition element starting from the left Index.
                 */
                while( ( lo < hi0 ) && ( a[lo] < mid ) )
                   ++lo;            /* find an element that is smaller than or equal to 
                 * the partition element starting from the right Index.
                 */
                while( ( hi > lo0 ) && ( a[hi] > mid ) )
                   --hi;            // if the indexes have not crossed, swap
                if( lo <= hi ) 
                {
                   swap(a, lo, hi);
                   // pause
                   pause();               ++lo;
                   --hi;
                }
             }         /* If the right index has not reached the left side of array
              * must now sort the left partition.
              */
             if( lo0 < hi )
                QuickSort( a, lo0, hi );         /* If the left index has not reached the right side of array
              * must now sort the right partition.
              */
             if( lo < hi0 )
                QuickSort( a, lo, hi0 );      }
       }   private void swap(int a[], int i, int j)
       {
          int T;
          T = a[i]; 
          a[i] = a[j];
          a[j] = T;   }   public void sort(int a[]) throws Exception
       {
          QuickSort(a, 0, a.length - 1);
       }
    }