⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 improvedmergesort.java

📁 java实现的各种排序算法:插入排序、起泡排序、希尔排序等。
💻 JAVA
字号:
package org.rut.util.algorithm.support; 


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

   private static final int THRESHOLD = 10; 

   /* 
    * (non-Javadoc) 
    * 
    * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[]) 
    */ 
   public void sort(int[] data) { 
       int[] temp=new int[data.length]; 
       mergeSort(data,temp,0,data.length-1); 
   } 

   private void mergeSort(int[] data, int[] temp, int l, int r) { 
       int i, j, k; 
       int mid = (l + r) / 2; 
       if (l == r) 
           return; 
       if ((mid - l) >= THRESHOLD) 
           mergeSort(data, temp, l, mid); 
       else 
           insertSort(data, l, mid - l + 1); 
       if ((r - mid) > THRESHOLD) 
           mergeSort(data, temp, mid + 1, r); 
       else 
           insertSort(data, mid + 1, r - mid); 

       for (i = l; i <= mid; i++) { 
           temp[i] = data[i]; 
       } 
       for (j = 1; j <= r - mid; j++) { 
           temp[r - j + 1] = data[j + mid]; 
       } 
       int a = temp[l]; 
       int b = temp[r]; 
       for (i = l, j = r, k = l; k <= r; k++) { 
           if (a < b) { 
               data[k] = temp[i++]; 
               a = temp[i]; 
           } else { 
               data[k] = temp[j--]; 
               b = temp[j]; 
           } 
       } 
   } 

   /** 
    * @param data 
    * @param l 
    * @param i 
    */ 
   private void insertSort(int[] data, int start, int len) { 
       for(int i=start+1;i<start+len;i++){ 
           for(int j=i;(j>start) && data[j]<data[j-1];j--){ 
               SortUtil.swap(data,j,j-1); 
           } 
       } 
   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -