packagecom.array.demo;importjava.util.Arrays;/*** 数组的排序*/
public classTestArraySort {public static voidmain(String[] args) {//定义待排序的数组
int[] numbers = {4,6,3,7,5,2,1};//求和
sum(numbers);//求平均数
avg(numbers);//最大数
max(numbers);//排序(冒泡,选择,插入)//希尔,二分法排序,归并排序//bubboSort(numbers);//选择排序//selectedSort(numbers);//插入排序
insertSort(numbers);
}private static void insertSort(int[] numbers) {//插入排序(将数列分为有序和无序两部分,//每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较, 找出插入位置,将该元素插入有序系列中)
for (int i = 1; i < numbers.length; i++) {for (int j = i; j >0; j--) {if (numbers[j] < numbers[j - 1]) {int temp =numbers[j];
numbers[j]= numbers[j-1];
numbers[j- 1] =temp;
}
}
}for (intel : numbers) {
System.out.print(el+" ");
}
System.out.println("\n\r");
}/*** 选择排序(每次从待排序的数据源元素中选出最小/最大一个元素顺序放到排好序的最后)
*@paramnumbers*/
private static void selectedSort(int[] numbers) {//定义存储最小值
int minVal = 0;//存储最小值下标
int minIndex = 0;for (int i =0 ; i < numbers.length; i++) {//假设第一个元素就是最小值
minVal =numbers[i];//记录最小值得下标
minIndex =i;for (int j = i + 1; j < numbers.length; j++) {if (numbers[j]
minVal =numbers[j];//存储最小值得下标
minIndex =j;
}
}if (minVal != numbers[i] && minIndex !=i) {
numbers[minIndex]=numbers[i];
numbers[i]=minVal;
}
}for (intel : numbers) {
System.out.print(el+" ");
}
System.out.println("\n\r");
}/*** 冒泡排序
*@paramnumbers*/
private static void bubboSort(int[] numbers) {for (int i = 0; i < numbers.length; i++) {for (int j = 0; j < numbers.length - i - 1; j++) {if (numbers[j] > numbers[j + 1]) {//交换2个元素
int temp =numbers[j];
numbers[j]= numbers[j + 1];
numbers[j+ 1] =temp;
}
}
System.out.println(Arrays.toString(numbers));
}for (intel : numbers) {
System.out.print(el+" ");
}
System.out.println("\n\r");
}private static void max(int[] numbers) {//假设第一个元素为最大值
int max = numbers[0];if(isNotEmpty(numbers)) {for (int i = 1; i < numbers.length; i++) {if (max
max=numbers[i];
}
}
}
System.out.println("最大值为:"+max);
}private static void avg(int[] numbers) {//定义存储总和遍历
int sum = 0;if(isNotEmpty(numbers)) {for (intnumber : numbers) {
sum+=number;
}
}
System.out.println("所有元素平均值为:"+sum/numbers.length);
}/*** 求数组中所有元素的和
*@paramnumbers*/
private static void sum(int[] numbers) {//定义存储总和遍历
int sum = 0;if(isNotEmpty(numbers)) {for (intnumber : numbers) {
sum+=number;
}
}
System.out.println("元素之和为:"+sum);
}//判断数组是否为空方法
private static boolean isNotEmpty(int[] array) {return array != null && array.length > 0;
}
}