1,斐波那契数列
递归写法:
写递归要确定两个:递归的终止条件;递归表达式。
递归规律:F(n)=F(n-1)+F(n-2)
static int F(int n){
if(n==1){
return 1;
}
if(n==2){
return 1;
}
return F(n-1)+F(n-2);
}
非递归写法:
static int F(int n){
int[] data=new int[n];
data[0]=1;
data[1]=1;
for(int i=2;i<n;i++){
data[i]=data[i-1]+data[i-2];
}
return data[n-1];
}
2,饿汉式和懒汉式的单例类,懒汉式有什么弊端?
饿汉式单例类:
public class Singleton{
private static Singleton instance=new Singleton();
private Singleton(){
}
public static Singleton getInstance(){
return instance;
}
}
懒汉式单列类:
public class Singleton{
private static Singleton instance;
private Singleton(){
}
public static Singleton getInstance(){
if(instance==null){
synchronized(Singleton.class){
if(instance==null){
instance=new Singleton();
}
}
}
return instance;
}
}
懒汉式单例类需要控制线程安全,而且如果创建对象需要花费很长时间的话,会导致用户体验不佳。
3,二分查找法
static int binarySearch(int[] a,int n){
int low=0;
int high=a.length-1;
while(low<=high){
int middle=(low+high)/2;
if(n==a[middle]){
return middle;
}else if(n<a[middle]){
high=middle-1;
}else{
low=middle+1;
}
}
return -2;
}
4,冒泡排序算法
static void Sort(int[] a){
for(int i=0;i<a.length-1;i++){
for(int j=0;j<a.length-1-i;j++){
if(a[j]>a[j+1]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(int i:a){
System.out.print(i+", ");
}
}
/*手动写一个函数用来发送ajax请求 */
function mypost(url,param,successFunc){
var xmlHttp;
if(window.XMLHttpRequest){
xmlHttp=new XMLHttpRequest();
}else{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4&&xmlHttp.status==200){
successFunc(xmlHttp.responseText);
}
}
xmlHttp.open("POST",url,true);
xmlHttp.send(param);
}
常见的算法分析及代码实现
最新推荐文章于 2022-09-29 14:40:58 发布
这篇博客探讨了斐波那契数列的递归和非递归实现,深入解析了饿汉式和懒汉式单例类的区别及其线程安全问题,并详细介绍了二分查找法的实现。此外,还展示了冒泡排序算法的代码,以及AJAX请求的示例。内容涵盖了基础算法、并发编程和前端交互。
摘要由CSDN通过智能技术生成