二分查找
找出一个数在数组中的位置
BinarySearch 类
public class BinarySearch {
private int [ ] intsArray;
private int des;
public BinarySearch ( int [ ] intsArray, int des) {
this . intsArray = intsArray;
this . des = des;
}
public static int binarySearch ( int [ ] intsArray, int des) {
int left = 0 ;
int right = intsArray. length - 1 ;
while ( left <= right) {
int middle = left + ( ( right - left) / 2 ) ;
if ( intsArray[ middle] > des) {
right = middle - 1 ;
} else if ( intsArray[ middle] < des) {
left = middle + 1 ;
} else {
return middle;
}
}
return - 1 ;
}
}
BinarySearchTest类
public class BinarySearchTest {
public static void main ( String [ ] args) {
int [ ] a = { 1 , 5 , 6 , 8 , 9 , 15 , 75 , 88 , 94 } ;
System . out. println ( binarySearch ( a, - 6 ) ) ;
System . out. println ( binarySearch ( a, 15 ) ) ;
}
}
---------------------------------------------------
查找一个字母在数组中的位置
BinarySearchOfWord 类
public class BinarySearchOfWord {
private String [ ] word;
private String des;
public static int binarySearchOfWord ( String [ ] word, String des) {
int left = 0 ;
int right = word. length;
while ( left < right) {
int middle = left + ( ( right - left) / 2 ) ;
if ( word[ middle] . equals ( des) ) {
return middle;
} else if ( word[ middle] . compareTo ( des) < 0 ) {
left = middle + 1 ;
} else {
return middle;
}
}
return - 1 ;
}
}
BinarySearchOfWordTest 类
public class BinarySearchOfWordTest {
public static void main ( String [ ] args) {
String [ ] arr= { "a" , "b" , "c" , "d" , "e" , "f" , "g" , "h" } ;
System . out. println ( binarySearchOfWord ( arr, "g" ) ) ;
}
}
求素数
返回所有不大于n的素数
public static void main ( String [ ] args) {
System . out. print ( "请输入一个整数:" ) ;
Scanner scanner = new Scanner ( System . in) ;
int number = scanner. nextInt ( ) ;
for ( int i = 1 ; i < number; i++ ) {
int count= 0 ;
for ( int j = 2 ; j < i; j++ ) {
if ( i% j== 0 ) {
count++ ;
}
}
if ( count== 0 ) {
System . out. print ( i+ " " ) ;
}
}
}
数组排序(比较器)
测试类
package com. atguigu. homework5 ;
import java. util. Comparator ;
public class Homework5 {
public static void main ( String [ ] args) {
Student [ ] students = new Student [ 4 ] ;
students[ 0 ] = new Student ( "liusan" , 20 , 90.0 ) ;
students[ 1 ] = new Student ( "lisi" , 22 , 90.0 ) ;
students[ 2 ] = new Student ( "wangwu" , 20 , 99.0 ) ;
students[ 3 ] = new Student ( "sunliu" , 22 , 100.0 ) ;
System . out. println ( "按照成绩和年龄排序:" ) ;
MyArrays . sort ( students) ;
for ( Student student : students) {
System . out. println ( student) ;
}
System . out. println ( "按照姓名排序:" ) ;
MyArrays . sort ( students, new Comparator < Student > ( ) {
@Override
public int compare ( Student o1, Student o2) {
return o1. getName ( ) . compareTo ( o2. getName ( ) ) ;
}
} ) ;
for ( Student student : students) {
System . out. println ( student) ;
}
}
}
MyArrays 类
package com. atguigu. homework5 ;
import java. util. Comparator ;
public class MyArrays {
public static < T extends Comparable < T > > void sort ( T [ ] arr) {
for ( int i = 1 ; i < arr. length; i++ ) {
for ( int j = 0 ; j < arr. length- i; j++ ) {
if ( arr[ j] . compareTo ( arr[ j+ 1 ] ) > 0 ) {
T temp = arr[ j] ;
arr[ j] = arr[ j+ 1 ] ;
arr[ j+ 1 ] = temp;
}
}
}
}
public static < T > void sort ( T [ ] arr, Comparator < ? super T > c) {
for ( int i = 1 ; i < arr. length; i++ ) {
for ( int j = 0 ; j < arr. length- i; j++ ) {
if ( c. compare ( arr[ j] , arr[ j+ 1 ] ) > 0 ) {
T temp = arr[ j] ;
arr[ j] = arr[ j+ 1 ] ;
arr[ j+ 1 ] = temp;
}
}
}
}
}
Student类
package com. atguigu. homework5 ;
public class Student implements Comparable < Student > {
private String name;
private int age;
private double score;
public Student ( String name, int age, double score) {
super ( ) ;
this . name = name;
this . age = age;
this . score = score;
}
public Student ( ) {
super ( ) ;
}
public String getName ( ) {
return name;
}
public void setName ( String name) {
this . name = name;
}
public int getAge ( ) {
return age;
}
public void setAge ( int age) {
this . age = age;
}
public double getScore ( ) {
return score;
}
public void setScore ( double score) {
this . score = score;
}
@Override
public String toString ( ) {
return "Student [name=" + name + ", age=" + age + ", score=" + score + "]" ;
}
@Override
public int compareTo ( Student stu) {
if ( this . getScore ( ) > stu. getScore ( ) ) {
return - 1 ;
} else if ( this . getScore ( ) < stu. getScore ( ) ) {
return 1 ;
}
return this . getAge ( ) - stu. getAge ( ) ;
}
}