在Java初期学习中遇到的几个需要留意的题①
for (int i = 1; i <LEN ; i++) {
boolean flag = false;
for (int j = 0; j < LEN - i; j++) {
if(arr[j] > arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
flag = true;
}
}
if(!flag){
break;
}
}
在Java初期学习中遇到的几个需要留意的题②
package com.bjsxt.oop6;
import java.util.Arrays;
public class TestSort {
public static void main(String[] args) {
test1();
}
public static void bubbleSort(Student[] arr){
final int LEN=arr.length;
if(arr==null)return;
if (LEN==0){
System.out.println("数组长度为零");
return;
}
for (int i=1;i<LEN;i++){
boolean flag=false;
for (int j=0;j<LEN-i;j++){
if(arr[j].comparaTo(arr[j+1])>0){
Student temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
flag=true;
}
}
if(!flag){
break;
}
}
}
public static void test1(){
Student[] arr= {
new Student(getRandomNum(10, 15), getRandomNum(60, 100)),
new Student(getRandomNum(10, 15), getRandomNum(60, 100)),
new Student(getRandomNum(10, 15), getRandomNum(60, 100)),
new Student(getRandomNum(10, 15), getRandomNum(60, 100)),
new Student(getRandomNum(10, 15), getRandomNum(60, 100)),
new Student(getRandomNum(10, 15), getRandomNum(60, 100)),
new Student(getRandomNum(10, 15), getRandomNum(60, 100)),
new Student(getRandomNum(10, 15), getRandomNum(60, 100)),
new Student(getRandomNum(10, 15), getRandomNum(60, 100)),
new Student(getRandomNum(10, 15), getRandomNum(60, 100))
};
System.out.println(Arrays.toString(arr));
bubbleSort(arr);
System.out.println(Arrays.toString(arr));
}
public static int getRandomNum(int min,int max){
return (int)(Math.random()*(max-min)+min);
}
}
interface Comparable{
int comparaTo(Object o);
}
class Student implements Comparable{
private int age;
private int score;
public Student(int age, int score) {
this.age = age;
this.score = score;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
@Override
public String toString() {
return "\nStudent{" +
"age=" + age +
", score=" + score +
'}';
}
@Override
public int comparaTo(Object o) {
Student s =(Student)o;
int result=this.getAge()-s.getAge();
if(result==0){
result=this.getScore()-s.getScore();
}
return result;
}
}