基础数组算法问题
今日,java课上机,旁边一同学让我写一个排序算法,虽然之前学过数据结构,但当时我却真心没回忆起来,于是乎,课后,我回到宿舍,用Java将这几个基本的数组排序问题写了一下。其实,看起来很简单,可是当时确实没有回忆起来。很不应该!以下代码我自己测试了,均能运行。写这篇博文,也是为了提醒我自己,以后这种基本的东西必须得让自己多留几个心眼!
package exercise; public class TestArray { //求数组的最大值 public int getMax(int[] arr){ int max = arr[0]; for(int i = 1;i<arr.length;i++){ if(max < arr[i]){ max = arr[i]; } } return max; } //求数组的最小值 public int getMin(int[] arr){ int min = arr[0]; for(int i = 1;i<arr.length;i++){ if(min >arr[i]){ min = arr[i]; } } return min; } //遍历数组元素 public void printArray(int[] arr){ System.out.println("["); for(int i = 0;i<arr.length;i++){ System.out.print(arr[i]+"\t"); } System.out.println("]"); } //求数组的的平均数 public int avg(int[] arr){ /*int sum = 0; for(int i = 0;i<arr.length;i++){ sum += arr[i]; }*/ int sum = getSum(arr); return sum/arr.length; } //求数组的总和 public int getSum(int[] arr){ int sum = 0; for(int i = 0;i<arr.length;i++){ sum += arr[i]; } return sum; } //数组的反转 public int[] reverse(int[] arr){ for(int x = 0,y = arr.length-1;x<y;x++,y--){ int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } return arr; } //实现数组的复制 public int[] copy(int[] arr){ /* * int[] arr1 = arr; * return arr1; * */ int[] arr1 = new int[arr.length];//设置复制后的数组长度与原数组的长度一样 for(int i = 0;i<arr.length;i++){ arr1[i] = arr[i]; } return arr1; } //对数组进行排序--冒泡排序 public void sort(int[] arr,String desc){ if(desc == "asc"){//ascend:表示从小到大 for(int i = 0;i<arr.length;i++){ for(int j = 0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1]){ swap(arr,j,j+1); } } } }else if( desc == "desc"){//descend:表示从大到小 for(int i = 0;i<arr.length;i++){ for(int j = 0;j<arr.length-1-i;j++){ if(arr[j] < arr[j+1]){ swap(arr,j,j+1); } } } } else{ System.out.println("您输入的排序方式有误"); } } //交换数组中指定位置的元素--交换数组arr中索引为i和j位置处的元素 public void swap(int[] arr,int i,int j){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } }
package exercise; import exercise.TestArray; public class TestArray1 { public static void main(String[] args){ int[] arr = new int[]{12,4,23,56,67,36,57,23,45,14,-23,-4}; TestArray t = new TestArray(); int avg = t.avg(arr); System.out.println("avg :"+avg); int max = t.getMax(arr); System.out.println("Max:"+max); System.out.println("反转之前!"); t.printArray(arr); t.reverse(arr); System.out.println("反转之后!"); t.printArray(arr); } }