堆排序引入了另一种算法设计技巧,使用了“堆”的数据结构来进行信息管理,堆是一个数组,可以看成一个近似的完全二叉树,如数组{1, 2, 3, 4, 5},可以看做为根节点为1,左孩子节点有2,右孩子节点为3的二叉树,4,5…
分类:算法
算法学习(排序三)快速排序
快速排序和归并排序一样,都用到了递归的方法,具体做法是先选取一个数为关键数据(一般选择第一个数),将数组中小于该数的放在左侧,大于该数的放在右侧;排序完成后对左右两个部分进一步的做如上操作 /** 快速排序,指定一个位置…
USACO-Section1.1 Greedy Gift Givers
【题目大意】 对于一羣(NP个)(2<=NP<=10)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少。 在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那些将收到他的礼物的人。 …
插入排序
a = [5,2,4,6,1,3] for j in range(1,len(a)): key = a[j] i=j-1 while i>=0 and a[i]>key: a[i+1] = a[i] a[i]…
PAT(Advanced Level) 1002 A+B
这个题都没一次通过,可以说很丢人了…… 不过细说起来,还是有值得聊聊的地方。 先看题目:1002 This time, you are supposed to find A+B where A and B are two…
hdu1116Play on Words(并查集+欧拉函数)
Play on Words Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java…
揹包问题简单示例
package knapsack; //简单揹包问题示例 public class Knapsack { public static void main(String[] args){ int val[] = {10, …
BFS寻路的AS3实现
关于BFS的相关知识由于水平有限就不多说了,感兴趣的可以自己去wiki或者其他地方查阅资料。 这里大概说一下BFS寻路的思路,或者个人对BFS的理解: 大家知道Astar的一个显著特点是带有启发函数,换句话说,Astar…
压缩字符串
给定一组字符,使用原地算法将其压缩。 压缩后的长度必须始终小于或等于原数组长度。 数组的每个元素应该是长度为1 的字符(不是 int 整数类型)。 在完成原地修改输入数组后,返回数组的新长度。 示例 1: 输入…
冒泡排序(借助中间变量和不借助中间变量)
#include using namespace std; void bubble(int l [],int n){// 使用中间变量temp实现互换 int i,temp,exchange=n,j…
二分查找算法
二分查找算法是在有序数组中用到的较为频繁的一种算法,在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,其时间为O(n).但二分查找算法则更优,因为其查找时间为O(lgn),譬如数组{1, 2…
排序算法@c++描述-shell排序
2.shell排序 #include <iostream> #include <vector> using namespace std; template <typename T> v…