数组的常用算法 (最大值 最小值 平均值 总和 复制 反转 排序)
1.求数组的最大值,最小值,平均值 ,总和
2.数组的复制,反转
3.数组元素的排序:
冒泡排序思想:相邻两元素进行比较,如果需要则进行交换,每完成一次循环就将最大元素排到最后(从小到大排序),下一次循环就将其它的数进行类似操作
直接排序思想:那第一个和后面的比较遇到比它小的互换,接着再和后面的比较,一轮下来可以得到第一位最小元素,后面同理。都是拿第一个去比较,得到这轮最小的
public class TestArray3 { public static void main(String[] args) { int[] arr = new int[] { 12, 12, 345, 34, -32, -58, 232, 43 }; // 最大值 int max = arr[0]; for (int i = 1; i < arr.length; i++) { if (max < arr[i]) { max = arr[i]; } } System.out.println("最大值:" + max); // 最小值 int min = arr[0]; for (int i = 1; i < arr.length; i++) { if (min > arr[i]) { min = arr[i]; } } System.out.println("最小值:" + min); // 总和 int sum = 0; for (int i = 0; i < arr.length; i++) { sum += arr[i]; } System.out.println("总和:" + sum); // 平均值 int avg = 0; avg = sum / arr.length; System.out.println("平均值:" + avg); // 数组元素的复制和反转 int[] arr1 = new int[arr.length]; for (int i = 0; i < arr1.length; i++) { arr1[i] = arr[i]; System.out.print(arr1[i] + "\t"); } System.out.println(); // 数组元素的反转 // 方法一: /* * for (int i = 0; i < arr.length / 2; i++) { int temp = arr[i]; arr[i] * = arr[arr.length - 1 - i]; arr[arr.length - 1 - i] = temp; } */ // 方法二: for (int x = 0, y = arr.length - 1; x < y; x++, y--) { int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + "\t"); } System.out.println(); // 排序:使用冒泡排序 使数组从小到大排序 /* * 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; } } } */ // 直接选择排序:小到大 for (int i = 0; i < arr.length - 1; i++) { int t = i;// 默认i处是最小的 for (int j = i; j < arr.length; j++) { // 一旦发现i后面存在比其还小的元素,就记录那个元素的下角标 if (arr[t] > arr[j]) { t = j; } } if (t != i) { int temp = arr[t]; arr[t] = arr[i]; arr[i] = temp; } } System.out.println("排序后:"); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + "\t"); } } }
All that work will definitely pay off