数组排序:
冒泡排序
选择排序
插入排序
快速排序
....
1.冒泡排序:
每一轮比较相邻的两个元素,小的在前,大的在后
int [] arr ={9,7,3,6,1}
i层循环: for(int i=0;i< arr.length-1;i++)
j层循环: for(int j=0;j<arr.length-1-i;j++)
判断条件 arr[j]>arr[j+1]
第一轮:9,7,3,6,1 -> i = 0 arr[j] > arr[j + 1]
1: 7,9,3,6,1 -> j =0 arr[0] 和 arr[1]
2: 7,3,9,6,1 -> j =1 arr[1] 和 arr[2]
3: 7,3,6,9,1 -> j =2 arr[2] 和 arr[3]
4: 7,3,6,1,9 -> j =3 arr[3] 和 arr[4]
第二轮:7,3,6,1,9 i = 1
1: 3,7,6,1,9 -> j =0 2: 3,6,7,1,9 -> j =1 3: 3,6,1,7,9 -> j =2
第三轮:3,6,1,7,9 i = 2
1: 3,6,1,7,9 -> j =0 2: 3,1,6,7,9 -> j =1
第四轮:3,1,6,7,9 i = 3
1: 1,3,6,7,9 -> j =0
2.选择排序:
每一轮都找出最大或最小值,放在数组最后或最前
int [] arr ={9,7,3,6,1}
i层循环: for(int i=0;i< arr.length-1;i++)
j层循环:for(int j=0;j<arr.length-i;j++)
第一轮:9,7,3,6,1 -> 结果: 1,7,3,6,9 i = 0 j = 1 ~ 4
int index = arr[0]
1: arr[index] 和 arr[1], arr[1] 和 arr[index] 得出最大值,定义一个变量arr[index] = arr[0]
2: arr[2] 和 arr[index] 得出最大值,arr[index] = arr[0]
3: arr[3] 和 arr[index] 得出最大值,arr[index] = arr[0]
4: arr[4] 和 arr[index] 得出最大值,arr[index] = arr[0]
交换位置: arr[index] 和 arr[length - 1 - i]
第二轮:1,7,3,6,9 -> 结果: 1,6,3,7,9 i =1 j = 1 ~ 3
1: arr[0] 和 arr[1] 得出最大值,arr[index] = arr[1]
2: arr[2] 和 arr[index] 得出最大值,arr[index] = arr[1]
3: arr[3] 和 arr[index] 得出最大值,arr[index] = arr[1]
交换位置: arr[index] 和 arr[length - 1 -i]
第三轮:1,6,3,7,9 -> 结果: 1,3,6,7,9 i = 2 j = 1 ~ 2
1: arr[0] 和 arr[1] 得出最大值,arr[index] = arr[1]
2: arr[2] 和 arr[index] 得出最大值,arr[index] = arr[1]
交换位置: arr[index] 和 arr[length - 1 -i]
第四轮:1,3,6,7,9 -> 结果: 1,3,6,7,9 i = 3 j = 1
1: arr[0] 和 arr[1] 得出最大值,arr[index] = arr[1]
交换位置: arr[index] 和 arr[length - 1 -i]
package day04;
import java.util.Arrays;
public class demo03 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] arr = {12,45,78,36};
select(arr);
System.out.println(Arrays.toString(arr));
int [] arr1 = {87,54,21,63};
bubble(arr1);
System.out.println(Arrays.toString(arr1));
}
//选择
public static void select(int [] arr) {
for(int i=0;i<arr.length-1;i++) {
int index=0;
for(int j=1;j<arr.length-i;j++) {
if(arr[j]>arr[index]) {
index=j;
}
}//交换位置
int temp=arr[index];
arr[index]=arr[arr.length-1-i];
arr[arr.length-1-i]=temp;
}
}
//冒泡
public static void bubble(int []arr) {
for(int i=0;i<arr.length-1;i++) {
for(int j=0;j<arr.length-1-i;j++) {
if(arr[j]>arr[j+1]) {
int temp=arr[j]; //交换位置
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
}