&二分搜索(必会算法)
public static int secondfen(int num[],int x)
{
int left=0;
int right=num.length-1;
int ans=0;
while(left<=right)
{
int middle=(left+right)/2;
if(x==num[middle])
{
ans=middle;
break;
}
else if(x<num[middle])
{
right=middle-1;
}else{
left=middle+1;
}
}
return ans;
}
一,比较器
package HROffer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
public class Compare1{
public static void main(String [] args)
{
Scanner cin=new Scanner(System.in);
int n=cin.nextInt();
cin.nextLine();
Student ss[]=new Student[n];
int flag=cin.nextInt();
List<Student> stu=new ArrayList<Student>();
for(int i=0;i<n;i++)
{
String name=cin.next();
int grade=cin.nextInt();
ss[i]=new Student(name,grade);
stu.add(ss[i]);
}
Comparator comp;
if(flag==0)
{
comp=new mycomparator1();
}else{
comp=new mycomparator2();
}
Collections.sort(stu,comp);
for(Student s:stu)
{
System.out.println();
}
}
}
class Student{
private int grade;
private String name;
public Student()
{
super();
}
public Student(String name,int grade)
{
super();
this.name=name;
this.grade=grade;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name=name;
}
public int getGrade()
{
return grade;
}
public void setGrade(int grade)
{
this.grade=grade;
}
}
class mycomparator1 implements Comparator<Student>
{
public int compare(Student s1,Student s2)
{
int grade1=s1.getGrade();
int grade2=s2.getGrade();
if(grade1<grade2)
{
return 1;
}else{
if(grade1>grade2)
{
return -1;
}else{
return 0;
}
}
}
}
class mycomparator2 implements Comparator<Student>
{
public int compare(Student s1,Student s2)
{
int grade1=s1.getGrade();
int grade2=s2.getGrade();
if(grade1>grade2)
{
return 1;
}else{
if(grade1<grade2)
{
return -1;
}else{
return 0;
}
}
}
}
二,字符串翻转输出
package 字符串处理回文;
import java.util.Scanner;
public class MOSTnEW字符串翻转刷出 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
in.nextLine();
for(int i=1;i<=n;i++){
String s = in.nextLine();
String[]ss = s.split(" ");
for(int j=0;j<ss.length;j++){
StringBuilder builder = new StringBuilder(ss[j]);
if(j+1==ss.length)System.out.print(builder.reverse().toString());
else System.out.print(builder.reverse().toString()+" ");
}
int p = s.length()-1;
while(s.charAt(p) == ' '){
System.out.print(' ');
p--;
}
System.out.println();
}
}
}
(3)素数不超时解法
package 规律算法题;
import java.util.Scanner;
public class SuShu素数不超时解法 {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
while(cin.hasNext())
{
int n=cin.nextInt();
int half=n/2;
int temp=0;
int i;
for(i=half;i>0;i--)
{
temp=2*half-i;
if(psushu(i)==1&&psushu(temp)==1)break;
}
System.out.println(i+" "+temp);
}
}
static int psushu(int m)
{
int sum=0;
for(int a=1;a<=Math.sqrt(m);a++)
{
if(m%a==0)
{
sum++;
}
}
return sum;
}
}
(5小球碰撞怒昂)
package 面向对象类解;
import java.util.Scanner;
public class 小球碰撞问题 {
static Ball [] ball=null;
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
while(cin.hasNext())
{
int n=cin.nextInt();
int l=cin .nextInt();
int t=cin.nextInt();
ball=new Ball[n];
for(int i=0;i<n;i++)
{
ball[i]=new Ball(cin.nextInt(),1);
}
for(int s=0;s<t;s++)
{
for(int i=0;i<n;i++)
{
if(ball[i].dir==1)
{
ball[i].position++;
if(ball[i].position==l)
{
ball[i].dir=ball[i].dir*(-1);
}
}
else{
ball[i].position--;
if(ball[i].position==0)
{
ball[i].dir=ball[i].dir*(-1);
}
}
}
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(ball[i].position==ball[j].position)
{
ball[i].dir=ball[i].dir*(-1);
ball[j].dir=ball[j].dir*(-1);
break;
}
}
}
}
for(int i=0;i<n;i++)
{
if(i<n-1)
{
System.out.print(ball[i].position+" ");
}
else{
System.out.print(ball[i].position);
}
}
System.out.println();
}
}
}
class Ball
{
public int position;
public int dir;
public Ball(int a,int b)
{
position=a;
dir=b;
}
}
(6)水果属相排序问题
package 面向对象类解;
import java.util.*;
import java.util.Scanner;
public class Main1263水果类暗属性排序 {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
while(n-->0){
int m=sc.nextInt();
Fruit[] f=new Fruit[m];
for(int i=0;i<m;i++){
f[i]=new Fruit();
f[i].name=sc.next();
f[i].place=sc.next();
f[i].numb=sc.nextInt();
}
sort(f);
String name=f[0].name;
String place=f[0].place;
int count=0;
boolean flag=true;
for(int i=0;i<m;i++){
if(place.compareTo(f[i].place)!=0){
place=f[i].place;
name=f[i].name;
count=0;
flag=true;
}
if(place.compareTo(f[i].place)==0){
if(flag){
System.out.println(place);
flag=false;
}
if(name.compareTo(f[i].name)==0){
while(i<m&&name.compareTo(f[i].name)==0&&place.compareTo(f[i].place)==0){
count+=f[i].numb;
i++;
}
System.out.println(" |----"+name+"("+count+")");
if(i<m){
name=f[i].name;
}
i--;
count=0;
}
}
}
if(n!=0){
System.out.println();
}
}
}
public static void sort(Fruit[] f){
for(int i=0;i<f.length-1;i++){
int minIndex=i;
for(int j=i+1;j<f.length;j++){
if(f[minIndex].place.compareTo(f[j].place)>0){
minIndex=j;
}else if(f[minIndex].place.compareTo(f[j].place)==0)
if(f[minIndex].name.compareTo(f[j].name)>0){
minIndex=j;
}
}
if(minIndex!=i){
Fruit temp=f[i];
f[i]=f[minIndex];
f[minIndex]=temp;
}
}
}
}
class Fruit{
int numb;
String name,place;
public Fruit(){
}
}