导航:首页 > 源码编译 > java常见算法题

java常见算法题

发布时间:2022-11-13 01:21:16

㈠ 关于java算法编程的问题,输入成绩,判断每门课得分的范围是否合理,输入时候用空格分割,

一、题目分析:
要计算每个学生的平均成绩,需要获取如下信息:
1、学生总数;
2、科目数;
3、每个学生每科的成绩。
然后累加每个学生的总分,并计算总成绩。
二、算法设计:
1、输入学生总数;
2、输入科目数;
3、对于每个学生,输入各科成绩,计算总分及平均分,保存平均分值。
4、输出结果。
三、参考代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, m;
float *p;
int i,j;
scanf("%d%d",&n,&m);//输入学生总数n和学科总数m。
p = (float *)malloc(sizeof(float)*n);//申请空间以存储平均分。
for(i = 0; i < n; i ++)
{
p[i] = 0;//初始为0.
for(j = 0; j < m; j ++)//输入每个学生每科成绩。
{
float t;
scanf("%f",&t);
p[i]+=t;//累加获得总分。
}
p[i]/=m;//计算平均分。
}
for(i = 0; i < n; i ++)//输出结果。
printf("%f\n", p[i]);
free(p);//释放内存。
return 0;
}

㈡ java 算法题:将下面的字符串按规则拆开,保存进list集合中

用String类的split函数先按中文逗号切分,再按"#"切分,就可以把此字符串前面的字母保存在集合a中,将后面的文字保存在集合b中。具体的Java程序如下:

importjava.util.ArrayList;
importjava.util.List;
publicclassCC{
publicstaticvoidmain(String[]args){
Strings="yw#语文,ss#数学,yy#英语,ty#体育";
List<String>a=newArrayList<String>();
List<String>b=newArrayList<String>();
String[]s1=s.split(",");
for(Stringtmp:s1){
String[]s2=tmp.split("#");
a.add(s2[0]);
b.add(s2[1]);
}
for(inti=0;i<a.size();i++)
System.out.print(a.get(i)+"");
System.out.println();
for(inti=0;i<b.size();i++)
System.out.print(b.get(i)+"");
System.out.println();
}
}

运行结果:

yw ss yy ty
语文 数学 英语 体育

㈢ 这道算法题该怎么做java实现

按照题目要求编写的程序如下(见图)

㈣ java常见gc算法有哪些

1:标记—清除
Mark-Sweep
过程:标记可回收对象,进行清除
缺点:标记和清除效率低,清除后会产生内存碎片
2:复制算法
过程:将内存划分为相等的两块,将存活的对象复制到另一块内存,把已经使用的内存清理掉
缺点:使用的内存变为了原来的一半
进化:将一块内存按8:1的比例分为一块Eden区(80%)和两块Survivor区(10%)
每次使用Eden和一块Survivor,回收时,将存活的对象一次性复制到另一块Survivor上,如果另一块Survivor空间不足,则使用分配担保机制存入老年代
3:标记—整理
Mark—Compact
过程:所有存活的对象向一端移动,然后清除掉边界以外的内存
4:分代收集算法
过程:将堆分为新生代和老年代,根据区域特点选用不同的收集算法,如果新生代朝生夕死,则采用复制算法,老年代采用标记清除,或标记整理
面试的话说出来这四种足够了

㈤ Java简单算法问题


初步做了一个出来,但是效率并不是很高,前100个计算速度还可以,但是往后就很慢了。如果什么时候有空的话可以再看看,先给你代码吧,不知道能不能帮上你

publicclassAlisandaNumber{
privatestaticfinalintMAX_INDEX=1000;//可以先把这个常量改为1-6,验证正确性
publicstaticvoidmain(String[]args){
inta=0;
intindex=0;
while(index<MAX_INDEX){
a+=6;//每次循环自增6,由题目规律可知A是6的倍数
booleanbreakOut=false;

//最大的约数为此数的平方根,因为如果是两个平方根相乘的话,剩下的就只有1了
intmaxNum=(int)Math.ceil(Math.sqrt(a));
p:
for(intp=1;p<=maxNum;p++){
if(a%p!=0){
continue;//如果不是约数的话,没必要考虑,下同
}

//最大约数为平方根的相反数,原理同上
maxNum=(int)Math.ceil(Math.sqrt(a/p));
for(intq=-1;q>=-maxNum;q--){//q和r必为负数
if(a%q!=0){
continue;
}

intr=a/(p*q);
intnonZero=p*q+p*r+q*r;
if(nonZero==0){
continue;
}
if((a==p*q*r)&&(a==(p*q*r)/(nonZero))){
index++;
breakOut=true;
breakp;//跳出外层循环
}
}
}
if(breakOut){
System.out.println(String.format("第%d个压力山大数是%d",index,a));
}
}
}
}



㈥ 1.java算法 2.问题如下: 已知圆心坐标(x,y),半径r,求圆边上各个角的坐标

publicclassCircle{
classPoint{
publicfloatx,y;
publicPoint(floatx,floaty){
this.x=x;
this.y=y;
}
}
privatestaticfinalfloatPI=3.14f;
privatefloatmPointX,mPointY;
privatefloatmRadius;
publicCircle(floatx,floaty,floatradius){
mPointX=x;
mPointY=y;
mRadius=radius;
}

publicPointcomputeCoordinates(floatangle){
returnnewPoint(mPointX+(float)(mRadius*Math.cos(angle*Math.PI/180)),
mPointY+(float)(mRadius*Math.sin(angle*Math.PI/180)));
}

publicstaticvoidmain(String[]args){
Circleperson=newCircle(1,1,3);
Pointpoint=person.computeCoordinates(60);
System.out.println(point.x+","+point.y);
}
}

㈦ java算法题

public class Monkey
{
public static void main(String[] args)
{
int sum=0,remain=1;
//每天吃剩的桃子加一个正好是前一天桃子的一半,每天桃子的总数就是前一天剩下桃子的数量
for(int day=9;day>=1;day--)
{
sum=(remain+1)*2;
remain=sum;
System.out.println("第"+day+"天还剩"+remain+"个桃子");
}
System.out.println(sum);
}
}

㈧ java面试有哪些算法

面试-java算法题:
1.编写一个程序,输入n,求n!(用递归的方式实现)。
public static long fac(int n){ if(n<=0) return 0; else if(n==1) return 1; else return n*fac(n-1);
} public static void main(String [] args) {
System.out.println(fac(6));
}
2.编写一个程序,有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
public static void main(String [] args) { int i, j, k; int m=0; for(i=1;i<=4;i++) for(j=1;j<=4;j++) for(k=1;k<=4;k++){ if(i!=j&&k!=j&&i!=k){
System.out.println(""+i+j+k);
m++;
}
}
System.out.println("能组成:"+m+"个");
}
3.编写一个程序,将text1.txt文件中的单词与text2.txt文件中的单词交替合并到text3.txt文件中。text1.txt文件中的单词用回车符分隔,text2.txt文件中用回车或空格进行分隔。
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;

public class text{
public static void main(String[] args) throws Exception{
String[] a = getArrayByFile("text1.txt",new char[]{'\n'});
String[] b = getArrayByFile("text2.txt",new char[]{'\n',' '});
FileWriter c = new FileWriter("text3.txt");
int aIndex=0; int bIndex=0;

while(aIndex<a.length){
c.write(a[aIndex++] + "\n");
if(bIndex<b.length)
c.write(b[bIndex++] + "\n");
}

while(bIndex<b.length){
c.write(b[bIndex++] + "\n");
}
c.close();
}

public static String[] getArrayByFile(String filename,char[] seperators) throws Exception{
File f = new File(filename);
FileReader reader = new FileReader(f);
char[] buf = new char[(int)f.length()];
int len = reader.read(buf);
String results = new String(buf,0,len);
String regex = null;
if(seperators.length >1 ){
regex = "" + seperators[0] + "|" + seperators[1];
}else{
regex = "" + seperators[0];
}
return results.split(regex);
}

}
4.639172每个位数上的数字都是不同的,且平方后所得数字的所有位数都不会出现组成它自身的数字。(639172*639172=408540845584),类似于639172这样的6位数还有几个?分别是什么?
这题采用的HashMap结构判断有无重复,也可以采用下题的数组判断。
public void selectNum(){
for(long n = 100000; n <= 999999;n++){
if(isSelfRepeat(n)) //有相同的数字,则跳过
continue;
else if(isPingFangRepeat(n*n,n)){ //该数的平方中是否有与该数相同的数字
continue;
} else{ //符合条件,则打印 System.out.println(n);
}
}
} public boolean isSelfRepeat(long n){
HashMap<Long,String> m=new HashMap<Long,String>(); //存储的时候判断有无重复值
while(n!=0){ if(m.containsKey(n%10)){ return true;
} else{
m.put(n%10,"1");
}
n=n/10;
} return false;
} public boolean isPingFangRepeat(long pingfang,long n){
HashMap<Long,String> m=new HashMap<Long,String>(); while(n!=0){
m.put(n%10,"1");
n=n/10;
} while(pingfang!=0){ if(m.containsKey(pingfang%10)){ return true;
}
pingfang=pingfang/10;
} return false;
} public static void main(String args[]){ new test().selectNum();
}
5.比如,968548+968545=321732732它的答案里没有前面两个数里的数字,有多少这样的6位数。
public void selectNum(){
for(int n = 10; n <= 99;n++){
for(int m = 10; m <= 99;m++){ if(isRepeat(n,m)){ continue;
} else{
System.out.println("组合是"+n+","+m);
}
}
}
} public boolean isRepeat(int n,int m){ int[] a={0,0,0,0,0,0,0,0,0,0}; int s=n+m; while(n!=0){
a[n%10]=1;
n=n/10;
} while(m!=0){
a[m%10]=1;
m=m/10;
} while(s!=0){ if(a[s%10]==1){ return true;
}
s=s/10;
} return false;
} public static void main(String args[]){ new test().selectNum();
}
6.给定String,求此字符串的单词数量。字符串不包括标点,大写字母。例如 String str="hello world hello hi";单词数量为3,分别是:hello world hi。
public static void main(String [] args) { int count = 0;
String str="hello world hello hi";
String newStr="";
HashMap<String,String> m=new HashMap<String,String>();
String [] a=str.split(" "); for (int i=0;i<a.length;i++){ if(!m.containsKey(a[i])){
m.put(a[i],"1");
count++;
newStr=newStr+" "+a[i];
}
}
System.out.println("这段短文单词的个数是:"+count+","+newStr);
}
7.写出程序运行结果。
public class Test1 { private static void test(int[]arr) { for (int i = 0; i < arr.length; i++) { try { if (arr[i] % 2 == 0) { throw new NullPointerException();
} else {
System.out.print(i);
}
} catch (Exception e) {
System.out.print("a ");
} finally {
System.out.print("b ");
}
}
}
public static void main(String[]args) { try {
test(new int[] {0, 1, 2, 3, 4, 5});
} catch (Exception e) {
System.out.print("c ");
}
}

}
运行结果:a b 1b a b 3b a b 5b
public class Test1 { private static void test(int[]arr) { for (int i = 0; i < arr.length; i++) { try { if (arr[i] % 2 == 0) { throw new NullPointerException();
} else {
System.out.print(i);
}
}
finally {
System.out.print("b ");
}
}
}
public static void main(String[]args) { try {
test(new int[] {0, 1, 2, 3, 4, 5});
} catch (Exception e) {
System.out.print("c ");
}
}

}
运行结果:b c
8.单词数
统计一篇文章里不同单词的总数。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组值输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend
#
Sample Output
4
public static void main(String [] args) {
List<Integer> countList=new ArrayList<Integer>(); int count;
HashMap<String,String> m;
String str; //读取键盘输入的一行(以回车换行为结束输入) String[] a;

Scanner in=new Scanner(System.in);
while( !(str=in.nextLine()).equals("#") ){
a=str.split(" ");
m=new HashMap<String,String>();
count = 0; for (int i=0;i<a.length;i++){ if(!m.containsKey(a[i]) && (!a[i].equals(""))){
m.put(a[i],"1");
count++;
}
}
countList.add(count);
}s for(int c:countList)
System.out.println(c);
}

㈨ java题:请使用任意一例排序算法,对int[] intArr={5,9,1,4,1,2,6,3,8,0,7}进行排序

importstaticjava.lang.System.*;
publicclassProgram{
publicstaticvoidmain(String[]args){
int[]intArr={5,9,1,4,1,2,6,3,8,0,7};
insertSort(intArr);
}

/**
*@paramarray插入排序算法待排数组
*/
staticvoidinsertSort(int...array){
inti,j,temp;
for(i=1;i<array.length;i++){
if(array[i]<array[i-1]){
temp=array[i];
for(j=i-1;j!=-1&&array[j]>temp;j--){
array[j+1]=array[j];//元素向后挪动
}
array[j+1]=temp;
}
}

for(intitem:array)out.print(item+"");
}
}

㈩ java算法有哪些分别

您好:

java中的算法,常见的有:递归、迭代、查找、排序(包含冒泡排序、选择排序、插入排序、快速排序四种) 等,算法有很多,一般数据结构中涉及到的都可以用java语言实现。

举几个例子:

1.递归的例子:

不一一举例,仅供参考!

阅读全文

与java常见算法题相关的资料

热点内容
家用编译机 浏览:547
电子加密货币最新政策 浏览:379
androidcanvas撤销 浏览:269
安卓手机怎么把图标全部下移 浏览:185
饥荒被服务器踢出怎么进 浏览:170
c编译器哪款好 浏览:732
快手宝哥发明什么app 浏览:822
张艳玲编译 浏览:66
android展开收起动画 浏览:237
linuxxz文件 浏览:160
在游戏中心里面怎么玩到解压神器 浏览:484
电脑发到手机里面照片怎么解压 浏览:74
虚拟pdf打印机64位 浏览:413
支付宝AES加密和解密 浏览:379
编译实验原理下载 浏览:131
加密防伪溯源系统私人定做 浏览:222
扫码给电动车充电的app叫什么 浏览:760
关闭命令提醒 浏览:356
云账本app服务器 浏览:500
python输入数字循环 浏览:370