J2ME裡排序演算法探究

gudesheng發表於2008-01-03

         排序演算法似乎是個老生常談的問題,但是如果真讓你在紙上寫出來的話,恐怕總是錯誤不斷。當然,我也一樣。總覺得它似乎很簡單,而不願意去深究它。到用的時候總是錯誤百出。

       那麼今天就徹底解決這個問題。

     下面是我剛寫的一個演算法,總的思想就是冒泡。

     在迴圈中讓每個元素和剩餘的元素做比較,然後讓值比較小的冒到最上方。

     下面是具體程式:

import java.util.Random;

class ArraySequence
{
 public static void main(String[] args)
 {
        int[] arrayL = new int[100000];
       Random rd = new Random();
      for(int i = 0;i < arrayL.length;i++)
      {
             arrayL[i] = Math.abs(rd.nextInt());
      }
      ArraySequence se = new ArraySequence();
     long starttime = System.currentTimeMillis();
     se.Sequence(arrayL);
     long endtime = System.currentTimeMillis();
    System.out.println((endtime-starttime));
//  StringBuffer sb = new StringBuffer();
//  for(int i = 0;i < arrayL.length;i++)
//      sb.append(arrayL[i]+"*");
//      System.out.println(sb.toString());
//      System.out.println(Runtime.getRuntime().totalMemory());
 }
 
 public void Sequence(int[] arraylist)
 {
   int len = arraylist.length;
  for(int i=0;i < arraylist.length;i++)
  {
   for(int j=i+1;j < len;j++)
   {
    if(arraylist[j] < arraylist[i])
    {
     int temp = 0;
     temp = arraylist[j];
     arraylist[j] = arraylist[i];
     arraylist[i] = temp;
    }
   }
  }
 }
}

 

 

           這是個測試的程式,主要的演算法在方法Sequence()中,可以直接呼叫這個方法把陣列傳遞進去即可。

          在我的測試過程中,排序10000個元素大概用時500~550ms,也就是0.5S左右。

          排序100000個元素大概用時60000左右,也就是1分鐘左右。

          速度方面還算可以吧。

          也暫時想不出來什麼更好的優化演算法。

         這個速度在J2ME遊戲裡應該是比較快了。

         希望大家多討論,排序演算法也是J2ME遊戲裡用的最多的一個演算法。

 

 

      author:Sun Dongfeng



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=744333


相關文章