算法导论示例-RandomizeInPlace

原创 2006年06月03日 11:07:00
/**
 * Introduction to Algorithms, Second Edition 
 * 5.3 RANDOMIZE-IN-PLACE
 * @author 土豆爸爸
 * 
 */
public class RandomizeInPlace {
    /**
     * 数组随机重排
     * @param array 待重排数组
     */
    public static void permute(int[] array) {
        for(int i = 0; i < array.length; i++) {
            //生成一个从i到n的随机数
            int randomIndex = i + (int)(Math.random() * (array.length - i));
            //交换
            int temp = array[i];
            array[i] = array[randomIndex];
            array[randomIndex] = temp;
        }
    }
}

import junit.framework.TestCase;

public class RandomizeInPlaceTest extends TestCase {
    public void testPermute() {
        int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        for (int i = 0; i < array.length; i++) {
            int[] clone = array.clone();
            RandomizeInPlace.permute(clone);
            print(clone);
        }
    }

    private void print(int[] array) {
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i]);
            System.out.print(" ");
        }
        System.out.println();
    }
}

链式哈希表(Hash Table)--算法导论示例

In computer science, a hash table is an associative array data structure that associates keys with v...

MIT:算法导论——2.渐近符号、递归及解法_和连续子数组的最大和、主方法/主定理求时间复杂度

#if 0 三种求解递归式的方法,即算法的O渐近界的方法: (1)代入法:猜测一个界,然后用 数学归纳法证明 这个界正确。 (2)递归树法:将递归式转换为一棵递归树。其结点表示不同层次的递归调用...

算法导论-查找-c++代码实现

考虑以下查找问题: 输入:n个数的一个序列A={ a1,a2, ..., an } 和一个值v。 输出:下标i使得v=A[i]或者当v不在A中时,v为特殊值NIL。 举例:输入n=5作为数组...
  • IT_job
  • IT_job
  • 2017年12月13日 18:50
  • 19

算法导论------快速排序

当我们学习研究完各种开发语言,操作系统,软件设计等方面软件知识之后,发现程序设计的本质还是在算法设计上。算法设计的好坏直接影响程序性能。于是,最近学习绕了一圈之后又重新拾掇起程序的核心部分------...

《算法导论》学习总结——第二部分2优先级队列

如堆一样,队列也有2种,最大优先级队列和最小优先级队列。最大优先级队列的一个应用是在一台分时计算机上进行作业调度(终于搞到点有用的),对于最大优先级队列,支持以下操作:     1)INSERT(S,...

算法导论第15章习题答案

Permalink: 2013-05-07 09:51:00 by hyhx2008in clrs tags: clrs algorithm 15.2-2 Q:请给出一个递归算法MATRIX-...

算法导论学习笔记(一):插入排序

排序可以说是我们平常写代码中最经常用到的算法之一了。冒泡排序应该是大家最熟悉的了,几乎每本编程语言的入 门教程中都会提到。这里主要讲下插入排序。 插入排序: 插入排序的大概步骤是从第二个...

算法导论第15章 动态规划-最优二叉查找树

1、前言:   接着学习动态规划方法,最优二叉查找树问题。二叉查找树参考http://www.cnblogs.com/Anker/archive/2013/01/28/2880581.html。...

算法导论第三版第七章课后答案

7.1-1 参照图7-1的方法,说明PARTITION在数组A={13,9,9,5,12,8,7,4,21,2,6,11}上的操作过程。 A={13,19,9,5,12,8,7,4,21,2,6...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:算法导论示例-RandomizeInPlace
举报原因:
原因补充:

(最多只允许输入30个字)