乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      用Java實現(xiàn)幾種常見的排序算法...

       軟件團隊頭目 2006-06-05

      插入排序:

      package org.rut.util.algorithm.support;

      import org.rut.util.algorithm.SortUtil;
      /**
       * @author treeroot
       * @since 2006-2-2
       * @version 1.0
       */
      public class InsertSort implements SortUtil.Sort{

          /* (non-Javadoc)
           * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
           */
          public void sort(int[] data) {
              int temp;
              for(int i=1;i<data.length;i++){
                  for(int j=i;(j>0)&&(data[j]<data[j-1]);j--){
                      SortUtil.swap(data,j,j-1);
                  }
              }       
          }

      }

      冒泡排序:

      package org.rut.util.algorithm.support;

      import org.rut.util.algorithm.SortUtil;

      /**
       * @author treeroot
       * @since 2006-2-2
       * @version 1.0
       */
      public class BubbleSort implements SortUtil.Sort{

          /* (non-Javadoc)
           * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
           */
          public void sort(int[] data) {
              int temp;
              for(int i=0;i<data.length;i++){
                  for(int j=data.length-1;j>i;j--){
                      if(data[j]<data[j-1]){
                          SortUtil.swap(data,j,j-1);
                      }
                  }
              }
          }

      }

      用Java語言實現(xiàn)的各種排序,包括插入排序、冒泡排序、選擇排序、Shell排序、快速排序、歸并排序、堆排序、SortUtil等。

      插入排序:

      package org.rut.util.algorithm.support;

      import org.rut.util.algorithm.SortUtil;
      /**
       * @author treeroot
       * @since 2006-2-2
       * @version 1.0
       */
      public class InsertSort implements SortUtil.Sort{

          /* (non-Javadoc)
           * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
           */
          public void sort(int[] data) {
              int temp;
              for(int i=1;i<data.length;i++){
                  for(int j=i;(j>0)&&(data[j]<data[j-1]);j--){
                      SortUtil.swap(data,j,j-1);
                  }
              }       
          }

      }

      冒泡排序:

      package org.rut.util.algorithm.support;

      import org.rut.util.algorithm.SortUtil;

      /**
       * @author treeroot
       * @since 2006-2-2
       * @version 1.0
       */
      public class BubbleSort implements SortUtil.Sort{

          /* (non-Javadoc)
           * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
           */
          public void sort(int[] data) {
              int temp;
              for(int i=0;i<data.length;i++){
                  for(int j=data.length-1;j>i;j--){
                      if(data[j]<data[j-1]){
                          SortUtil.swap(data,j,j-1);
                      }
                  }
              }
          }

      }

      快速排序:

      package org.rut.util.algorithm.support;

      import org.rut.util.algorithm.SortUtil;

      /**
       * @author treeroot
       * @since 2006-2-2
       * @version 1.0
       */
      public class QuickSort implements SortUtil.Sort{

          /* (non-Javadoc)
           * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
           */
          public void sort(int[] data) {
              quickSort(data,0,data.length-1);       
          }
          private void quickSort(int[] data,int i,int j){
              int pivotIndex=(i+j)/2;
              //swap
              SortUtil.swap(data,pivotIndex,j);
              
              int k=partition(data,i-1,j,data[j]);
              SortUtil.swap(data,k,j);
              if((k-i)>1) quickSort(data,i,k-1);
              if((j-k)>1) quickSort(data,k+1,j);
              
          }
          /**
           * @param data
           * @param i
           * @param j
           * @return
           */
          private int partition(int[] data, int l, int r,int pivot) {
              do{
                 while(data[++l]<pivot);
                 while((r!=0)&&data[--r]>pivot);
                 SortUtil.swap(data,l,r);
              }
              while(l<r);
              SortUtil.swap(data,l,r);       
              return l;
          }

      }

      改進后的快速排序:

      package org.rut.util.algorithm.support;

      import org.rut.util.algorithm.SortUtil;

      /**
       * @author treeroot
       * @since 2006-2-2
       * @version 1.0
       */
      public class ImprovedQuickSort implements SortUtil.Sort {

          private static int MAX_STACK_SIZE=4096;
          private static int THRESHOLD=10;
          /* (non-Javadoc)
           * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
           */
          public void sort(int[] data) {
              int[] stack=new int[MAX_STACK_SIZE];
              
              int top=-1;
              int pivot;
              int pivotIndex,l,r;
             
              stack[++top]=0;
              stack[++top]=data.length-1;
             
              while(top>0){
                  int j=stack[top--];
                  int i=stack[top--];
                 
                  pivotIndex=(i+j)/2;
                  pivot=data[pivotIndex];
                 
                  SortUtil.swap(data,pivotIndex,j);
                 
                  //partition
                  l=i-1;
                  r=j;
                  do{
                      while(data[++l]<pivot);
                      while((r!=0)&&(data[--r]>pivot));
                      SortUtil.swap(data,l,r);
                  }
                  while(l<r);
                  SortUtil.swap(data,l,r);
                  SortUtil.swap(data,l,j);
                 
                  if((l-i)>THRESHOLD){
                      stack[++top]=i;
                      stack[++top]=l-1;
                  }
                  if((j-l)>THRESHOLD){
                      stack[++top]=l+1;
                      stack[++top]=j;
                  }
                 
              }
              //new InsertSort().sort(data);
              insertSort(data);
          }
          /**
           * @param data
           */
          private void insertSort(int[] data) {
              int temp;
              for(int i=1;i<data.length;i++){
                  for(int j=i;(j>0)&&(data[j]<data[j-1]);j--){
                      SortUtil.swap(data,j,j-1);
                  }
              }      
          }

      }

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多