热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java算法期末复习知识点

1.合并数列算法代码publicListmerge(ListA,ListB){inti0,j0;ListCn

1.合并数列算法代码

public List merge(List A,List B){
int i = 0,j = 0;
List C = new ArrayList();
while(i if(A.get(i) C.add(A.get(i));
i++;
}else{
C.add(B.get(j));
j++;
}
}
if(i==A.size()){
for(;j C.add(B.get(j));
}
}else{
for(;i C.add(A.get(i));
}
}
return C;
}
}

2.选择算法代码

public List sort(List nums){
for(int i = 0;i for(int j=i+1;j int jiaohuan;
if(nums.get(i)>nums.get(j)) {
jiaohuan = nums.get(j);
nums.set(j,nums.get(i));
nums.set(i,nums.get(j));
}
}
}
return nums;
}

3.冒泡排序算法代码

public List sort(List nums){
for(int i = 0;i for(int j = 0;j int jiaohuan;
if(nums.get(j)>nums.get(j+1)) {
jiaohuan = nums.get(j+1);
nums.set(j+1, nums.get(j));
nums.set(j, jiaohuan);
}
}
}
return nums;
}

4.堆排序思维

·修改子节点值,向上移



·修改子节点值,向下移



·最大堆性质:根节点永远比两个子节点大

·最小堆性质:根节点永远比两个子节点小

5.堆建立

·最大堆

·

6.基数排序思维

·10个桶:0-9

·按最后一位进行排,也就是个十百千,个位桶排序取出再到十位桶

·

7.union,find操作

·find(x):寻找元素 x 所在集合

·union(x,y):把元素 x 和元素 y 所在集合合并成一个集合

·union(x,y)操作,那个树的高度大就拿那个树来当根节点

·路径压缩:find(x) 操作时,找到 x 的根结点 y 之后,再沿着 x 到 y 的路径,改变路径上所有结点的父指针,使其直接指向 y



·

8.递归阶乘代码

public static int factorial(int n){
if(n==0 && n == 1){
return 1;
}else{
return n*factorial(n-1);
}
}

9.递归整数幂代码

public static int power(int x,int n){
if(n==0){
return 1;
}else{
y=power(x,n/2);
y=y*y;
if(n%2==1){
y=y*x;
}
}
return y;
}

10.斐波那契递归算法代码:

public static int factorial(int n){
if(n ==1 || n==2){
return 1;
}else{
return factorial(n-1)+factorial(n-2);
}
}

11.数组主元素代码

public int getCandidate(int nums[], int begin, int end ){
int j = begin,count =1;
int c = nums[j];
while(j0){
j++;
if(nums[j]==c){
count++;
}else{
count--;
}
}
if(j==end-1 && count>0){
return nums[j];
}else if(j==end-1 && count == 0){
return 0;
}else{
return getCandidate(nums,j,end);
}
}

12.分治合并算法代码

public List merge_sort(List nums,int low,int high){
int min;
if(low mid = (high-low)/2;
merge_sort(nums,low,mid);
merge_sort(nums,mid+1,high);
merge(nums,low,mid,high,high-low)
}
return nums;
}

13.快速排序代码和思维

·

·

·

·

·

·

·

·

·

·

·

public void quick_sort(Listnums,int n,int m){
if(n int pos=split(nums,n,m)
int quick_sort(nums,n,pos-1);
int quick_sort(nums,pos+1,m)
}
}

14.线性选择排序思维

·利用快速排序的思维去分区找到元素

线性选择,第三大需要几次分区

137,96,88,108,17,87,65,35,76,45,66,18

17,18,88,108,137,87,65,35,76,45,66,96

88,66,45,87,65,35,76,96,108,137

需要两次

15.选择排序思维

16.贪婪算法思维

17.狄斯奎诺算法思维

·

18.克鲁斯卡尔算法思维

19.普利姆算法思维

20.图遍历

21.动态规划

22.最长公共子序列



推荐阅读
author-avatar
3051451abcd
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有