/*
将数组arr = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10};
按照从大到小的顺序进行重新排序
*/
class Dome {
public static void main(String[] atgs) {
int[] arr = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10};
sortArray(arr); // 排序
System.out.println("该数组从大到小排序效果为 :");
printArray(arr); // 展示数组
}
/**
* 将用户指定数组从大到小排序
*
* @param arr 指定数组
*/
public static void sortArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
int start = i; // 搜索位置
int max = firstMax(arr, start); //寻找最大值,并将其下标返回
int point = i; // 将最大值放置在该位置,将与该下标内元素调换
reversePosition(arr, point, max); //调换point,max两个下标内元素
}
}
/**
* 在指定数组中调换指定两个下标内的元素
*
* @param arr 指定元素
* @param max 指定元素
*/
public static void reversePosition(int[] arr, int point, int max) {
int temp = 0; // 设置临时缓存变量
/*
point与max下标内元素相互交换
*/
temp = arr[point];
arr[point] = arr[max];
arr[max] = temp;
}
/**
* 在指定数组中找出最大值,并将下标返回
*
* @param arr 指定数组
* @param start 起始搜索下标
* @return 返回最大值下标
*/
public static int firstMax(int[] arr, int start) {
int max = start; // 定义搜索起始位置
/*
从起始位置开始,搜索数组内最大值
并将其下标返回
*/
for (int i = start; i < arr.length; i++) {
if(arr[max] < arr[i]) {
max = i;
}
}
return max;
}
/**
* 展示指定数组
*
* @param arr 需要展示的数组
*/
public static void printArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(" " + arr[i]);
}
}
}