数组的排序:
冒泡排序
冒泡排序基本思想:
在要排序的数组中,对当前还未排好序的范围内的全部数,
自上而下(从左到右)对相邻的两个数依次进行比较和调整
让较大的数往下沉(往右移),较小的往上浮(往左移),即:
每当两个相邻的数比较后,他们的顺序与排序要求相反时,
就将它们互换
冒泡排序的改进:
对冒泡排序的常见的改进方法是 加入一个标志性的
变量,用于标志某一轮排序过程中是否有数据交换,
如果没有进行数据交换,则说明数据已经按照要求
排列好,可立即结束排序,避免不必要的比较过程。
/**
冒泡排序
{6,3,1,2,5,4}
第一轮:找最大
6>3,交换{3,6,1,2,5,4}
6>1,交换{3,1,6,2,5,4}
...... {3,1,2,5,4,6}
第二轮:找次大
3>1,交换{1,3,2,5,4,6}
3>2,交换{1,2,3,5,4,6}
..... {1,2,3,4,5,6}
第三轮:找第三大
...
第四轮:找第四大
*/
import java.util.Arrays;
public class ArrDemo01{
public static void main(String[] args){
int[] arr1 = {15, 67, 26, 43, 61, 25, 84, 80, 34, 70};
/*冒泡排序*/
for(int i=0;i<arr1.length-1;i++){
boolean f = false;
for(int j=0;j<arr1.length-1-i;j++){
if(arr1[j]>arr1[j+1]){
int temp = arr1[j];
arr1[j] = arr1[j+1];
arr1[j+1] = temp;
f = true;//交换一次就改变状态
}
}
if(!f){
//开关状态没变 说明已经完成排序,不用继续下一轮
break;
}
}
System.out.println(Arrays.toString(arr1));
}
}
简单选择排序:基本思想如下
在要排序的数组中,选择出最小(或者最大)的一
个数与第一个位置的数交换;然后再剩下的数当
中再找最小(或最大)的与第二个位置的数交换
依次类推,直到第n-1个元素(倒数第二个)和第
n个元素(最后一个数)比较为止。
简单选择排序
原始数据 {4,5,2,3,1};
找出最小1 与4交换 {1,5,2,3,4}
找出最小2 与5交换 {1,2,5,3,4}
找出最小3 与5交换 {1,2,3,5,4}
找出最小4 与5交换 {1,2,3,4,5}
/*简单排序*/
for(int i=0;i<arr.length-1;i++){
int index = i;//用于记录最小值的下标(初始假设arr[i]最小)
boolean f = false;//定义一个标记
for(int j=i+1;j<arr.length;j++){
if(arr[index]>arr[j]){
index = j;//记录较小值的下标
f = true;//改变标记
}
}//内层结束
if(f){//查看标记,更改,则需要交换
int t = arr[i];
arr[i] = arr[index];
arr[index] = t;
}
}
System.out.println(Arrays.toString(arr));
工具类的排序方法:
Arrays.sort(数组变量名);--对基本数据类型的数组
与引用类型的数组都可排序