【java的排序算法】

1.插入排序:

  2.

  3.1.package org.rut.util.algorithm.support;

  4.2.import org.rut.util.algorithm.SortUtil;

  5.3.4.public class InsertSort implements SortUtil.Sort{

  6.5.    /* (non-Javadoc)

  7.6.     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])

  8.7.     */

  9.8.    public void sort(int[] data) {

  10.9.        int temp;

  11.10.        for(int i=1;i<data.length;i++){

  12.11.            for(int j=i;(j>0)&&(data[j]<data[j-1]);j--){

  13.12.                SortUtil.swap(data,j,j-1);

  14.13.            }

  15.14.        }

  16.15.    }

  17.16.}

  18.17.冒泡排序:

  19.

  20.1.package org.rut.util.algorithm.support;

  21.2.import org.rut.util.algorithm.SortUtil;

  22.3.4.public class BubbleSort implements SortUtil.Sort{

  23.5.    /* (non-Javadoc)

  24.6.     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])

  25.7.     */

  26.8.    public void sort(int[] data) {

  27.9.        int temp;

  28.10.        for(int i=0;i<data.length;i++){

  29.11.            for(int j=data.length-1;j>i;j--){

  30.12.                if(data[j]<data[j-1]){

  31.13.                    SortUtil.swap(data,j,j-1);

  32.14.                }

  33.15.            }

  34.16.        }

  35.17.    }

  36.18.}

  37.19.选择排序:

  38.1.package org.rut.util.algorithm.support;

  39.2.import org.rut.util.algorithm.SortUtil;

  40.3.4.public class SelectionSort implements SortUtil.Sort {

  41.5.    /*

  42.6.     * (non-Javadoc)

  43.7.     *

  44.8.     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])

  45.9.     */

  46.10.    public void sort(int[] data) {

  47.11.        int temp;

  48.12.        for (int i = 0; i < data.length; i++) {

  49.13.            int lowIndex = i;

  50.14.            for (int j = data.length - 1; j > i; j--) {

  51.15.                if (data[j] < data[lowIndex]) {

  52.16.                    lowIndex = j;

  53.17.                }

  54.18.            }

  55.19.            SortUtil.swap(data,i,lowIndex);

  56.20.        }

  57.21.    }

  58.22.}

  59.23.Shell排序:

  60.1.package org.rut.util.algorithm.support;

  61.2.import org.rut.util.algorithm.SortUtil;

  62.3.4.public class ShellSort implements SortUtil.Sort{

  63.5.    /* (non-Javadoc)

  64.6.     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])

  65.7.     */

  66.8.    public void sort(int[] data) {

  67.9.        for(int i=data.length/2;i>2;i/=2){

  68.10.            for(int j=0;j<i;j++){

  69.11.                insertSort(data,j,i);

  70.12.            }

  71.13.        }

  72.14.        insertSort(data,0,1);

  73.15.    }

  74.16.    /**

  75.17.     * @param data

  76.18.     * @param j

  77.19.     * @param i

  78.20.     */

  79.21.    private void insertSort(int[] data, int start, int inc) {

  80.22.        int temp;

  81.23.        for(int i=start+inc;i<data.length;i+=inc){

  82.24.            for(int j=i;(j>=inc)&&(data[j]<data[j-inc]);j-=inc){

  83.25.                SortUtil.swap(data,j,j-inc);

  84.26.            }

  85.27.        }

  86.28.    }

  87.29.}

  88.30.快速排序:

  89.1.package org.rut.util.algorithm.support;

  90.2.import org.rut.util.algorithm.SortUtil;

  91.3.4.public class QuickSort implements SortUtil.Sort{

  92.5.    /* (non-Javadoc)

  93.6.     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])

  94.7.     */

  95.8.    public void sort(int[] data) {

  96.9.        quickSort(data,0,data.length-1);

  97.10.    }

  98.11.    private void quickSort(int[] data,int i,int j){

  99.12.        int pivotIndex=(i+j)/2;

  100.13.        //swap 14.        SortUtil.swap(data,pivotIndex,j);

  101.15.

  102.16.        int k=partition(data,i-1,j,data[j]);

  103.17.        SortUtil.swap(data,k,j);

  104.18.        if((k-i)>1) quickSort(data,i,k-1);

  105.19.        if((j-k)>1) quickSort(data,k+1,j);

  106.20.

  107.21.    }

  108.22.    /**

  109.23.     * @param data

  110.24.     * @param i

  111.25.     * @param j

  112.26.     * @return

  113.27.     */

  114.28.    private int partition(int[] data, int l, int r,int pivot) {

  115.29.        do{

  116.30.           while(data[++l]<pivot);

  117.31.           while((r!=0)&&data[--r]>pivot);

  118.32.           SortUtil.swap(data,l,r);

  119.33.        }

  120.34.        while(l<r);

  121.35.        SortUtil.swap(data,l,r);

  122.36.        return l;

  123.37.    }

  124.38.}

  125.39.改进后的快速排序:

  126.1.package org.rut.util.algorithm.support;

  127.2.import org.rut.util.algorithm.SortUtil;

  128.3.4.public class ImprovedQuickSort implements SortUtil.Sort {

  129.5.    private static int MAX_STACK_SIZE=4096;

  130.6.    private static int THRESHOLD=10;

  131.7.    /* (non-Javadoc)

  132.8.     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])

  133.9.     */

  134.10.    public void sort(int[] data) {

  135.11.        int[] stack=new int[MAX_STACK_SIZE];

  136.12.

  137.13.        int top=-1;

  138.14.        int pivot;

  139.15.        int pivotIndex,l,r;

  140.16.

  141.17.        stack[++top]=0;

  142.18.        stack[++top]=data.length-1;

  143.19.

  144.20.        while(top>0){

  145.21.            int j=stack[top--];

  146.22.            int i=stack[top--];

  147.23.

  148.24.            pivotIndex=(i+j)/2;

  149.25.            pivot=data[pivotIndex];

  150.26.

  151.27.            SortUtil.swap(data,pivotIndex,j);

  152.28.

  153.29.            //partition 30.            l=i-1;

  154.31.            r=j;

  155.32.            do{

  156.33.                while(data[++l]<pivot);

  157.34.                while((r!=0)&&(data[--r]>pivot));

  158.35.                SortUtil.swap(data,l,r);

  159.36.            }

posted @ 2013-08-22 14:30  豆豆逗逗  阅读(302)  评论(0编辑  收藏  举报