- 博客(6)
- 资源 (5)
- 收藏
- 关注
原创 堆排序及其优化过程总结
引言:众所周知,堆排序算法是高级排序算法中的一种,平均时间复杂度为O(nlogn),算法思想是:先把带排序的记录构造成堆,然后通过从堆中不断选取最小/大元素,从而达到排序的目的。本文将以最大堆为例从三个点依次讨论堆排序的优化,即从基础堆排序到heapify、再到原地堆排序讨论。以下共有三个堆排序算法(heapSort1、heapSort2、heapSort3)依次由浅入深讨论。(动图源于网络)
2018-01-22 18:04:57 2280
原创 快速排序及其优化过程总结
引言:众所周知,快速排序算法是基于分治策略的一个排序算法,基本的算法在数据结构或算法设计与分析中都有讲解,本文不再赘述。本文主要总结的是快速排序的优化过程,即从一个基本的快速排序如何根据其中的缺陷一步一步优化来的。以下共有四个快排算法(qSort1、qSort2、qSort3、qSort4)依次由浅入深讨论。(动图源于网络) 1.基本快速排序法如图所示:设基准为划分数组的第一个元素,
2018-01-19 19:56:02 784
原创 直接插入排序
引言:直接插入排序时间复杂度是O(n²),其算法思想很简单,即每步将一个待排序的记录,按其排序码的大小,插到前面已经排序的文件中的适当位置,直到全部插入完为止。具体过程如下图(动图源于网络): 直接插入排序代码如下:private static void insertSort(int[] a,int l,int r){ if(l>=r) return; for(int i
2018-01-22 18:50:20 305
原创 动态规划-3.1.2矩阵连乘问题之迭代法(自底向上)
问题描述:给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2…,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少 问题分析:由于矩阵乘法满足结合律,所以计算矩阵的连乘可以有许多不同的计算次序。这种计算次序可以用加括号的方式来确定。 若一个矩阵连乘积的计算次序完全确定,也就是说该连乘积已完全加括号,则可以依此次序反复调用2个矩阵相乘
2018-01-09 23:22:47 2689 4
原创 回溯法-5.3批处理作业调度
问题描述:给定n个作业的集合{J1,J2,…,Jn}。每个作业必须先由机器1处理,然后由机器2处理。作业Ji需要机器j的处理时间为tji。对于一个确定的作业调度,设Fji是作业i在机器j上完成处理的时间。所有作业在机器2上完成处理的时间和称为该作业调度的完成时间和。 批处理作业调度问题要求对于给定的n个作业,制定最佳作业调度方案,使其完成时间和达到最小 分析:这3个作业的6种可能的调度方案
2018-01-09 23:18:31 1166
转载 【动态规划】二维背包问题之0 1背包(二维 0-1背包)
原文出处:http://www.54fox.com/2011/12/dynamicprogram-01-knapsack/动态规划是个十分有趣而且重要的算法,据说这个算法的发明者当初是在为美国国防部做的一个项目中发明了这个算法,为了让别人不知道他在做什么随便起了一个名字叫做动态规划(dynamic programming),因此你永远不要试图从它的名字中理解它的思想。动态规划的基本思想与分治法类似
2018-01-02 00:56:55 7192
Jclasslib_win64bit
2018-12-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人