算法
文章平均质量分 57
rw-just-go-forward
这个作者很懒,什么都没留下…
展开
-
顺时针遍历方阵
昨天去面试,考到了这个题,当时写的不是特别好,回到家重新梳理了一下思路就是采用递归遍历,先遍历最外圈,然后四角收缩,遍历内圈矩阵,递归的终止条件有两种,一种是中间剩一个元素,一种是中间剩四个元素代码如下package r.w.practice;public class MatrixTraverser { public static void main(String[] args...原创 2019-11-20 09:33:26 · 451 阅读 · 0 评论 -
哈尔滨编程大赛编程题目一
好久没写算法题了昨天一个远方弟弟找到我,让我帮做个题,正好练练手吧,记在这里题目任务:随机给出三个整数分别存放在变量【A】、【B】、【C】中,如果将它们连成一排,将会得到一个多位整数。请你找出各种 连接方法得到的最大的多位整数,将它存放到变量【结果】中;注意:【A】、【B】、【C】的值已经帮你存好了,你不需要再修 改它们,直接使用即可;举例:【A】为13,【B】为312,【C】为343,...原创 2019-10-24 16:14:33 · 366 阅读 · 0 评论 -
牛顿法求平方根
牛顿法求平方根common lisp实现(defun square (x) (* x x))(defun abs (x) (if (< x 0) (- x) x ))(defun good-enough? (guess x) (< (abs (- (square guess) x)) 0.001))(defun average (原创 2016-07-07 07:42:56 · 1046 阅读 · 0 评论 -
快速排序的一个Java实现
毕业之后远离算法好久了,突发奇想写一个快排吧,当时怎么都学不会,看看现在能不能写出来。以下是时间线计时开始 。 。 。 依然有bug 。 。 。 当当当,灵机一动 。 。 。 时间啊,等等我 。 。 。 咦,可以了憋了两个多小时才写出了,也是醉了,看来算法水平还是很菜,不过总算是写出来了,这次对快排又加深了一点理解。/** * Created by wsy on 2原创 2016-03-05 10:43:26 · 805 阅读 · 0 评论 -
快速排序另一种实现
#include using namespace std;void print_r(int *a, int length){ for (int i = 0; i < length; ++i) cout << a[i] << ' '; cout << endl;}void q_sort(int *a, int length){ if (length =原创 2012-10-15 18:50:47 · 779 阅读 · 0 评论 -
堆排序
堆排序是一种高效的比较排序算法,运行时间为O(nlgn)。这种排序需要用到一种叫做(二叉)堆的数据结构,堆是一种数组对象,也可以看做一颗完全二叉树,对于任一节点,左右子节点和父节点分别可如下简单算出 PARENT(i) ((i - 1) / 2) LEFT(i) (2 * i + 1) RIGHT(i) (2 * i + 2)堆分为大根堆和小根堆,分别具有如下原创 2012-10-14 22:33:21 · 905 阅读 · 0 评论 -
小实验,四种排序算法性能比较
闲着没事,做个小小的测试,测试一下冒泡,选择,插入和快速四种排序对同一个含有1000000个元素的数组排序所用的时间,做个比较。四种排序的代码如下:冒泡排序:template void bubble_sort(T a[], int num){ if(num ==0 || num == 1) return ; bool changed = false; do{ for(i原创 2012-06-25 21:58:44 · 3127 阅读 · 1 评论 -
归并排序
归并排序是一种高效的排序算法,时间复杂度为nlogn,与快排相当,是分治法的一种典型应用。归并排序的思想是将若干个有序的序列合并为一个有序序列,常用的是二路归并,也就是将两个有序子序列合并为一个序列。归并排序可用递归完成,第一次排序将序列分成两部分,第二次排序将两序列在分成两部分,如此下去,直到每个子序列只有一个元素,则子序列自然有序,然后合并即可。归并操作的工作原理如下:原创 2012-06-27 14:39:03 · 947 阅读 · 0 评论 -
快速排序
快速排序是一种效率很高的排序,具有最好nlogn,最坏n2的复杂度,总的来说,快排的效果是非常好的,如果有兴趣研究算法性能的分析,推荐阅读《算法导论》,我在这里就不分析了,也分析不明白。总之,它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数原创 2012-06-25 20:21:54 · 738 阅读 · 0 评论 -
选择排序
选择排序是一种不稳定的排序方法,排序思想比较简单,大致可描述为:每次在待排序元素中选出最小元素,放到前面,如此下去,每次选出的都是剩余元素的最小元素,直至待排序元素只剩一个时,排序结束,演示过程如下:设待排序有n个元素,分别为[1...n],未排序时,有序区元素个数为零,无序区元素个数为n。以五个元素为例,a[5] = {5, 4, 3, 2, 1}第一趟排序从无序区选出最小元素为原创 2012-06-25 08:36:42 · 661 阅读 · 0 评论 -
冒泡排序
冒泡排序是一种简单实用的排序算法。是稳定的。其基本思想为:从第一个元素开始,与相邻的后一个比较,如果前一个元素大于后一个元素,则元素交换,否则不动;然后比较第二个和第三个,前大后小则交换,否则不换;如此下去,比较完第n-1个和第n个元素之后,第一趟排序结束,此时最大的元素被换到了最后面。第二趟继续以上动作,只比较前n-1个元素即可,因为最大的已经到了最后面,无需再比较,第二趟结束后,这时倒数第原创 2012-06-24 17:15:41 · 716 阅读 · 0 评论