假设有一个数组[6,3,26,33,31,32]
原始方式:
public static void main(String[] args) {
int[] arr = {6,3,26,33,31,32};
//第一次
if(arr[0] > arr[1]){
int t = arr[0];// t作为临时存放数据的变量
arr[0] = arr[1];
arr[1] = t;
}
List<Integer> collect1 = Arrays.stream(arr).boxed().collect(Collectors.toList());
System.out.println("collect1==>"+collect1);
//第二次
if(arr[1] > arr[2]){
int t = arr[1];
arr[1] = arr[2];
arr[2] = t;
}
List<Integer> collect2 = Arrays.stream(arr).boxed().collect(Collectors.toList());
System.out.println("collect2==>"+collect2);
//第三次
if(arr[2] > arr[3]){
int t = arr[2];
arr[2] = arr[3];
arr[2] = t;
}
List<Integer> collect3 = Arrays.stream(arr).boxed().collect(Collectors.toList());
System.out.println("collect3==>"+collect3);
//第四次
if(arr[3] > arr[4]){
int t = arr[3];
arr[3] = arr[4];
arr[4] = t;
}
List<Integer> collect4 = Arrays.stream(arr).boxed().collect(Collectors.toList());
System.out.println("collect4==>"+collect4);
//第五次
if(arr[4] > arr[5]){
int t = arr[4];
arr[4] = arr[5];
arr[5] = t;
}
List<Integer> collect5 = Arrays.stream(arr).boxed().collect(Collectors.toList());
System.out.println("collect5==>"+collect5);
}
执行结果:
发现上述方法是在是太繁琐,有多少个数据就需要去执行n-1次,可以用循环来解决
public static void main(String[] args) {
int[] arr = {6,3,26,33,31,32};
List<Integer> list = Arrays.stream(arr).boxed().collect(Collectors.toList());
System.out.println("没有排序之前的数据==>"+list);
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length -i; j++) {
if(j < arr.length -1-i){
if(arr[j] > arr[j+1]) {
//声明一个变量temp作为中间量去实现交换
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
List<Integer> list2 = Arrays.stream(arr).boxed().collect(Collectors.toList());
System.out.println("排序之后的数据==>"+list2);
}
没有排序之前的数据==>[6, 3, 26, 33, 31, 32]
排序之后的数据==>[3, 6, 26, 31, 32, 33]
不过利用好java8新特新的话,排序就更简单了,完全可以一句代码搞定,当然还有其他的排序方式,就不一一列举出来了。
public static void main(String[] args) {
int[] arr = {6,3,26,33,31,32};
List<Integer> list = Arrays.stream(arr).boxed().collect(Collectors.toList());
System.out.println("没有排序之前的数据==>"+list);
List<Integer> list2 = list.stream().sorted().collect(Collectors.toList());
System.out.println("排序之后的数据==>"+list2);
}
没有排序之前的数据==>[6, 3, 26, 33, 31, 32]
排序之后的数据==>[3, 6, 26, 31, 32, 33]