
acm
前行中632
不想被淘汰的码农
展开
-
树状数组
今天听学长讲了树状数组,不得不说一脸懵逼,哈哈。回来后写了两个入门题,但依然被坑得挺惨,数据范围的问题,2333,狂爆int, 下次看题时,一定要注意数据范围的问题,int大概可以开到10^9吧,要珍重,另外学了一个数据的离散化,即对于值特别大,而n(个数)很小的情况,可以用下标来代替值,因为在一个数组时,它的大小开到10^8. 9次方的话就会爆掉了,编译都通不过 树状数组的原创 2016-08-29 20:46:20 · 343 阅读 · 0 评论 -
快速排序(quicksort)
快排一种非常常用的算法,采用分治思想,不需要辅助空间。 思路: 1. 随意找一个元素,一般选择首元素,以其为基准。 2. 从序列两头遍历这个序列,将比基准小的元素排在左侧,大的排右侧。 3. 对基准左侧和右侧的两个子序列,重复前两步,直到将序列分割成一个元素。代码:“` void quicksort(int *num,int low,int hi原创 2016-08-18 19:39:35 · 428 阅读 · 0 评论 -
归并排序(mergesort)
归并排序(mergesort) 它在时间复杂度上由于我们较常用的冒泡或者查找等算法,它实现了在最坏情况下O(nlogn)C语言实现:#include<stdio.h>int num[100];void merge(int low,int mid,int hi){ int temp[100]; int i,j,k; i=k=low; j=mid;原创 2016-08-16 10:21:51 · 314 阅读 · 0 评论 -
冒泡排序(Bubble Sort)
经历了大学一年,再回首重新审视冒泡排序,可以看的更透彻,更明朗一些。 冒泡排序(Bubble Sort) 其实整个中心思想在于,一个有序的排列中,一定不会存在逆序对,所以它一遍遍的遍历,让各个位置保证数字就位。版本A版本B:原创 2016-08-16 08:34:05 · 446 阅读 · 0 评论 -
汉诺塔问题
很早时就学了汉诺塔,当时觉得好深奥啊,感觉好难懂啊,(好羞愧啊)现在再来想一下,重新来过,感觉思路一切都是那般清晰 n-圆盘数 a-源塔座 b-中介塔座 c-目标塔座它是通过递归来解决的这问题, 伪代码: 当n=1时 直接就a->c 当n>1时 hanoi(n-1,a,c,b);//将最下面一块之上的园盘都通过c,从a挪到b上去 a->c;//然后将最后一块挪到c原创 2017-06-08 16:33:29 · 323 阅读 · 0 评论 -
floyd ,dijikstra,Bellman-ford算法详解
几乎是瞬间,自己已经是大二了,真得时间过得好快,大一掠过,只有一些美好的回忆留在心头。不扯淡了,言归正传。图论,这名字起的太大了,其实就是一些最基本的算法,用于解决图上的最短距离的算法。第一个是floyd 算法 很简单直白的算法,是使用邻接矩阵来求最短路的算法,其实就是通过点来松弛两点之间的距离。 例如:for(int i=1;i<=n;i++){ for(int j=1;j<=n;原创 2016-09-19 21:49:54 · 2261 阅读 · 0 评论