思想:每一轮比较得到结果是剩余元素中最大的值==》放到最右边
操作:比较和交换
===》具体分析思路:
class ArraySort {
public static void main(String[] args) {
int[] arr = {5,32,15,2,23,7,77,1,55};
sort(arr);
/*
System.out.println(arr[5]);//打印最后一个 元素
System.out.println(arr[4]);
System.out.println(arr[3]);
System.out.println(arr[2]);
System.out.println(arr[1]);
System.out.println(arr[0]);
System.out.println(arr[6]);
System.out.println(arr[7]);
System.out.println(arr[8]);
*/
/*
调用方法3中方式:1.类名.方法名();有static修饰
2.对象名.方法名();没有有static修饰
3.方法名();在同一个类中,都有或都没有static修饰
*/
PrintArr.printArr(arr);
}
/**
定义一个方法实现 数组从小到大的排序
*/
public static void sort(int[] arr) {
/*
//第1轮 得到最大的值放到最右边
//第1轮 第1次 比较第1个元素和第2个元素大小,如果第1个元素大于第2个元素,那么作交换
if(arr[0] > arr[1]){
int temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
}
//第1轮 第2次 比较第2个元素和第3个元素大小,如果第2个元素大于第3个元素,那么作交换
if(arr[1] > arr[2]){
int temp = arr[1];
arr[1] = arr[2];
arr[2] = temp;
}
//第1轮 第3次 比较第3个元素和第4个元素大小,如果第3个元素大于第4个元素,那么作交换
if(arr[2] > arr[3]){
int temp = arr[2];
arr[2] = arr[3];
arr[3] = temp;
}
//第1轮 第4次 比较第4个元素和第5个元素大小,如果第4个元素大于第5个元素,那么作交换
if(arr[3] > arr[4]){
int temp = arr[3];
arr[3] = arr[4];
arr[4] = temp;
}
//第1轮 第5次 比较第5个元素和第6个元素大小,如果第5个元素大于第6个元素,那么作交换
if(arr[4] > arr[5]){
int temp = arr[4];
arr[4] = arr[5];
arr[5] = temp;
}
*/
//优化上面代码
//第1轮
/*
for(int i=0;i<=4;i++){
if(arr[i] > arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
//第2轮 得到剩余最大的值放到剩余位置最右边
for(int i=0;i<=3;i++){
if(arr[i] > arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
//第3轮 得到剩余最大的值放到剩余位置最右边
for(int i=0;i<=2;i++){
if(arr[i] > arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
//第4轮 得到剩余最大的值放到剩余位置最右边
for(int i=0;i<=1;i++){
if(arr[i] > arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
//第5轮 得到剩余最大的值放到剩余位置最右边
for(int i=0;i<=0;i++){
if(arr[i] > arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
*/
//优化上面代码
for(int j=0;j<=arr.length-2;j++){
for(int i=0;i<=arr.length-2-j;i++){
if(arr[i] > arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
}
}