<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 495,  comments - 11,  trackbacks - 0

    插入排序:

    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 SelectionSort 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++) {
    ???????????? int lowIndex = i;
    ???????????? for (int j = data.length - 1; j > i; j--) {
    ???????????????? if (data[j] < data[lowIndex]) {
    ???????????????????? lowIndex = j;
    ???????????????? }
    ???????????? }
    ???????????? SortUtil.swap(data,i,lowIndex);
    ???????? }
    ???? }

    }


    改進后的歸并排序:

    package org.rut.util.algorithm.support;

    import org.rut.util.algorithm.SortUtil;

    /**
    * @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);
    ???????????? }
    ???????? }
    ???? }


    堆排序:

    package org.rut.util.algorithm.support;

    import org.rut.util.algorithm.SortUtil;

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

    ???? /* (non-Javadoc)
    ????? * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
    ????? */
    ???? public void sort(int[] data) {
    ???????? MaxHeap h=new MaxHeap();
    ???????? h.init(data);
    ???????? for(int i=0;i<data.length;i++)
    ???????????? h.remove();
    ???????? System.arraycopy(h.queue,1,data,0,data.length);
    ???? }

    ????? private static class MaxHeap{?????????
    ????????
    ???????? void init(int[] data){
    ???????????? this.queue=new int[data.length+1];
    ???????????? for(int i=0;i<data.length;i++){
    ???????????????? queue[++size]=data[i];
    ???????????????? fixUp(size);
    ???????????? }
    ???????? }
    ?????????
    ???????? private int size=0;

    ???????? private int[] queue;
    ????????????????
    ???????? public int get() {
    ???????????? return queue[1];
    ???????? }

    ???????? public void remove() {
    ???????????? SortUtil.swap(queue,1,size--);
    ???????????? fixDown(1);
    ???????? }
    ???????? //fixdown
    ???????? private void fixDown(int k) {
    ???????????? int j;
    ???????????? while ((j = k << 1) <= size) {
    ???????????????? if (j < size && queue[j]<queue[j+1])
    ???????????????????? j++;
    ???????????????? if (queue[k]>queue[j]) //不用交換
    ???????????????????? break;
    ???????????????? SortUtil.swap(queue,j,k);
    ???????????????? k = j;
    ???????????? }
    ???????? }
    ???????? private void fixUp(int k) {
    ???????????? while (k > 1) {
    ???????????????? int j = k >> 1;
    ???????????????? if (queue[j]>queue[k])
    ???????????????????? break;
    ???????????????? SortUtil.swap(queue,j,k);
    ???????????????? k = j;
    ???????????? }
    ???????? }

    ???? }

    }

    posted on 2007-06-10 18:47 jadmin 閱讀(76) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: www.黄色免费网站| 91福利视频免费| 免费一级e一片在线播放| 亚洲精品无码你懂的| 毛片免费全部免费观看| 激情五月亚洲色图| 国外成人免费高清激情视频| 亚洲一区二区三区高清不卡| 国内免费高清在线观看| 亚洲一卡一卡二新区无人区| 天天操夜夜操免费视频| 亚洲av无码专区在线电影| 国产一级淫片视频免费看| 麻豆安全免费网址入口| 国产亚洲色视频在线| 日本视频免费高清一本18| 亚洲成人中文字幕| 在线视频精品免费| 午夜亚洲国产理论片二级港台二级 | A毛片毛片看免费| 亚洲av中文无码乱人伦在线r▽ | 成人A毛片免费观看网站| 亚洲av无码国产精品夜色午夜| 免费人成视频在线观看网站| 亚洲一区二区三区国产精品无码| 免费特级黄毛片在线成人观看| 黄床大片30分钟免费看| 久久亚洲综合色一区二区三区 | 亚洲国产精品免费在线观看| 成人AV免费网址在线观看| 国产亚洲精品美女久久久久| 国产亚洲精品激情都市| 99久久人妻精品免费二区| 国产亚洲sss在线播放| 亚洲午夜日韩高清一区| 日韩内射激情视频在线播放免费 | 亚洲最大成人网色| 免费高清av一区二区三区| 二区久久国产乱子伦免费精品| 亚洲欧洲自拍拍偷午夜色| 亚洲精品97久久中文字幕无码|