码迷,mamicode.com
首页 > 编程语言 > 详细

大三上算法分析课常用算法1

时间:2018-04-07 13:56:55      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:temp   log   自动   排序   copy   全排列   string   n+2   sys   

//Ackerman
package FirstP;
import java.util.Scanner;
public class Ackerman {
public static int ack(int n,int m)
{
if(n==0&&m>=0)return 1;
if(n==1&&m==0)return 2;
if(n>=2&&m==0)return n+2;
if(n>=1&&m>=1) return ack(ack(n-1,m),m-1);
return -1;
}
public static void main(String[] args)
{
// TODO 自动生成的方法存根
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
System.out.println(ack(n,m));
}
}
//全排列
package FirstP;
import java.util.Scanner;
public class allp {
public static void all(String[] a,int start,int end)
{
if(start==end)
{
for(int i=0;i<=end;i++)
{
System.out.print(a[i]+" ");
}
System.out.println();
}
else{
for(int i=start;i<=end;i++)
{
String temp=a[start];
a[start]=a[i];
a[i]=temp;
all(a,start+1,end);
temp=a[start];
a[start]=a[i];
a[i]=temp;
}
}
}
public static void main(String[] args)
{
// TODO 自动生成的方法存根
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
String[] a=new String[n];
for(int i=0;i<n;i++)
{
a[i]=sc.next();
}
all(a,0,a.length-1);
}
}
//斐波那契
package FirstP;
import java.util.Scanner;
public class fibonacci {
public static int fi(int n)
{
if(n<=2)
{
return 1;
}
else
{
return fi(n-1)+fi(n-2);
}
}
public static int nfi(int n)
{
if(n<=2)
{
return 1;
}
int n1=1,n2=1,sn=0;
for(int i=0;i<n-2;i++)
{
sn=n1+n2;
n1=n2;
n2=sn;
}
return sn;
}
public static void main(String[] args)
{
// TODO 自动生成的方法存根
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
System.out.println(fi(n));
int sum=0;
for(int i=1;i<=n;i++)
{
sum=nfi(i);
}
System.out.println(sum);
}
}
//合并排序
package FirstP;
import java.util.Scanner;
public class hebing {
static int[] b;
public static void MergeSort(int a[],int left,int right)
{
if(left<right)
{

int i=(left+right)/2;
MergeSort(a,left,i);
MergeSort(a,i+1,right);
merge(a,b,left,i,right);
Copy(a,b,left,right);
}
}
static void merge(int x[],int y[],int l,int m,int r)
{
int i=l,j=m+1,k=l;
while((i<=m)&&(j<=r))
{
if(x[i]<=x[j])
y[k++]=x[i++];
else
y[k++]=x[j++];
}
while(i<=m)
y[k++]=x[i++];
while(j<=r)
y[k++]=x[j++];
}
static void Copy(int a[],int b[],int m,int n)
{
for(int i=m;i<=n;i++)
a[i]=b[i];
}
public static void main(String[] args)
{
// TODO 自动生成的方法存根
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
b=new int[n];
int[] a=new int[n];
for(int i=0;i<a.length;i++)
{
a[i]=sc.nextInt();
}

MergeSort(a, 0, n-1);
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+" ");
}
}
}
//整数划分
package FirstP;
import java.util.Scanner;
public class intp {
static int q(int n,int m)
{
if(n<1||m<1)return 0;
if(n==1||m==1)return 1;
if(n<m)return q(n,n);
if(n==m)return q(n,n-1)+1;
return q(n,m-1)+q(n-m,m);
}
public static void main(String[] args)
{
// TODO 自动生成的方法存根
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
System.out.println(q(n,n));

}
}
//快速排序
package FirstP;
import java.util.Scanner;
public class quickp {
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] a=new int[n];
for(int i=0;i<n;i++)
{
a[i]=sc.nextInt();
}
quicsort(a,0,a.length-1);
for(int i=0;i<n;i++)
{
System.out.print(a[i]+" ");
}
}
public static void quicsort(int[] a,int start,int end)
{
if(start<end)
{
int i=start,j=end;
int vot=a[i];
while(i!=j)
{
while(i<j&&vot<=a[j])
j--;
if(i<j)
a[i++]=a[j];
while(i<j&&vot>=a[i])
i++;
if(i<j)
a[j--]=a[i];
}
a[i]=vot;
quicsort(a,start,j-1);
quicsort(a,i+1,end);
}
}
}
//二分查找
package FirstP;
import java.util.Arrays;
import java.util.Scanner;
public class twop {
public static int er(int a[],int start,int stop,int key)
{
if(start>stop) return -1;
int mid=(start+stop)/2;
if(a[mid]==key)return mid;
if(a[mid]>key)return er(a,start,mid-1,key);
return er(a,mid+1,stop,key);
}
public static void main(String[] args)
{
// TODO 自动生成的方法存根
Scanner sc=new Scanner(System.in);
int s=sc.nextInt();
int a[]=new int [s];
for(int i=0;i<s;i++)
{
a[i]=sc.nextInt();
}
int key=sc.nextInt();
Arrays.sort(a);
int x=er(a,0,a.length-1,key);
System.out.println(x);
}
}

大三上算法分析课常用算法1

标签:temp   log   自动   排序   copy   全排列   string   n+2   sys   

原文地址:https://www.cnblogs.com/hsyv123ve/p/8732964.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!