算法导论示例-InsertSort

原创 2006年06月02日 22:00:00
/**
 * Introduction to Algorithms, Second Edition 
 * 2.1 InsertSort
 * @author 土豆爸爸
 * 
 */
public class InsertSort {

    /**
     * 插入排序
     * 
     * @param array
     *            待排序数组
     * @return 已排序数组
     */
    public static void sort(int[] array) {
        for (int j = 1; j < array.length; j++) {
            int key = array[j];
            int i = j - 1;
            while (i >= 0 && array[i] > key) {
                array[i + 1] = array[i];
                i--;
            }
            array[i + 1] = key;
        }
    }
}

import junit.framework.TestCase;

public class InsertSortTest extends TestCase {
    public void testFixArray() {
        int[] array = { 5, 2, 4, 6, 1, 3 };
        InsertSort.sort(array);
        assertTrue(verifyOrdered(array));
    }

    public void testRandomArray() {
        int size = (int)(Math.random()* 1000);
        int[] array = new int[size];
        for(int i = 0; i < size; i++) {
            array[i] =  (int)(Math.random()* 10000);
        }
        
        InsertSort.sort(array);
        assertTrue(verifyOrdered(array));
    }
    
    private boolean verifyOrdered(int[] array) {
        for (int i = 1; i < array.length; i++) {
            if (array[i - 1] > array[i]) {
                return false;
            }
        }
        return true;
    }
}

相关文章推荐

算法导论2.1-insertsort算法(插入排序)

这个算法我没有看原理没有看演示图就开始着手写了, 以为自己几年编程经验完成它几乎不会费力气 但是话费了我快一个小时,结果总是不对 后来追bug发现根本就进不去替换位置的分支 开始意识到是我的条...

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

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

算法导论 思考题 4-5

1

【算法导论】动态规划之矩阵链乘法

所谓矩阵链乘法是指当一些矩阵相乘时,如何加括号来改变乘法顺序从而来降低乘法次数。例如有三个矩阵连乘:A1*A2*A3,其维数分别为:10*100,100*5,5*50.如果按照((A1*A2)*A3)...

算法导论第三版第8章思考题

8-1a.因为对于每一种输入,不可能能够到达同一片叶子,所以一共有n!n!片子是可以到达的。其次因为输入完全随机,每种输入概率相等且到叶子结点的路径是固定的,这n!n!个叶子结点的概率也是相等的,为1...
  • obguy
  • obguy
  • 2016年03月03日 20:23
  • 1441

《算法导论》笔记 第16章 16.1 活动选择问题

【笔记】
  • cyendra
  • cyendra
  • 2014年04月28日 14:28
  • 864

MIT算法导论第七讲学习笔记-哈希表(Hashing)

哈希表,又称散列表,其定义是根据一个哈希函数将集合S中的关键字映射到一个表中,这个表就称为哈希表,而这种方法就称为Hashing。 我们先来一个直观的理解:如果一个集合S中的关键字,并且关键字各不相...

算法导论 习题 16.1-5

16.1-5 给定n个活动的开始时间和结束时间表,及每个活动的收益表,求对这些活动的一个组织使收益最大化。 这问题其实CLRS正文介绍贪心算法时用到的 活动选择问题 的泛化;即能用贪心算法...

最优二叉搜索树(Optimal BST)-算法导论

问题描述: 维基百科定义: https://en.wikipedia.org/wiki/Optimal_binary_search_tree  In the static optimality p...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:算法导论示例-InsertSort
举报原因:
原因补充:

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