java se--2.数组-3.常见算法
来源:互联网 发布:mac用pe安装win7系统 编辑:程序博客网 时间:2024/06/08 14:25
1 数组的常用算法
1.1 求数组元素的最大值、最小值、平均数、总和等
//数组最大值 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.print("["); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + "\t"); } System.out.println("]"); }
//数组平均数 public int avg(int[] arr) { 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; }
1.2 数组的复制、反转
// 数组的反转 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; }
1.3 数组元素的排序
// 数组的排序public void sort(int[] arr, String desc) {if (desc == "asc") {//从小到大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]) {swap(arr,j,j+1);}}}} else if (desc == "desc") {//从大到小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]) {swap(arr,j,j+1);}}}} else {System.out.println("你输入的排序方式有误");}}public void swap(int[] arr,int i,int j){int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}
2 排序与查找
2.1 直接排序
案例二:使用直接排序对数组进行排序:
/* 选择排序。 以一个角标的元素和其他元素进行比较。 在内循环第一次结束,最值出现的头角标位置上。 */ public static void selectSort(int[] arr) { for(int x=0; x<arr.length-1; x++) { for(int y=x+1; y<arr.length; y++)//为什么y的初始化值是 x+1? 因为每一次比较, //都用x角标上的元素和下一个元素进 行比较。 { if(arr[x]>arr[y]) { int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } } } }
2.2 冒泡排序
案例三:冒泡排序
/* 冒泡排序。 比较方式:相邻两个元素进行比较。如果满足条件就进行位置置换。 原理:内循环结束一次,最值出现在尾角标位置。 */ public static void bubbleSort(int[] arr) { for(int x=0; x<arr.length-1; x++) { for(int y=0; y<arr.length-x-1; y++)//-x:让每次参与比较的元减。 //-1:避免角标越界。 { if(arr[y]>arr[y+1]) { int temp = arr[y]; arr[y] = arr[y+1]; arr[y+1] = temp; } } }}
2.3 折半查找
案例四:/* 为了提高查找效率,可使用折半查找的方式,注意:这种查找只对有序的数组有效。 这种方式也成为二分查找法。 */ public static int halfSeach(int[] arr,int key) { int min,mid,max; min = 0; max = arr.length-1; mid = (max+min)/2; while(arr[mid]!=key) { if(key>arr[mid]) min = mid + 1; else if(key<arr[mid]) max = mid - 1; if(min>max) return -1; mid = (max+min)/2; } return mid; }
案例五:数组翻转 /* 反转其实就是头角标和尾角标的元素进行位置的置换, 然后在让头角标自增。尾角标自减。 当头角标<尾角标时,可以进行置换的动作。 */ public static void reverseArray(int[] arr) { for(int start=0,end=arr.length-1;start<end; start++,end--) { swap(arr,start,end); } } //对数组的元素进行位置的置换。 public static void swap(int[] arr,int a,int b) { int temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; }
3 Arrays类
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
阅读全文
0 0
- java se--2.数组-3.常见算法
- java se--2.数组-4.二维数组
- java se--2.数组-1.基础
- java se数组
- Java Se----数组
- Java SE基础知识:数组
- 【Java SE】数组
- JAVA SE回顾------数组
- Java SE 常见逻辑思维题
- java se--2.数组-2.一维数组
- java se 中的数组理解
- 3 java se(3)----数组
- Java SE 基础:多维数组
- Java数组中常见的排序算法
- Java SE学习笔记:方法参数的传递机制、数组算法
- 【JAVA SE】3.注释
- 数组常见算法
- 数组常见算法比较
- Linux 下的磁盘的格式化和挂载
- 卷积神经网络入门详解
- You Only Look Once: Unified, Real-Time Object Detection
- 11.5
- QString与std::string的相互转换
- java se--2.数组-3.常见算法
- WIN7下创建tensorflow环境[Anaconda3-4.2.0+tensorflow(gpu/cpu)+pycharm]
- magento中常用知识点
- Hadoop学习第一天
- 计算机类中文核心期刊
- OpenCV Contrib Modules
- 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
- 多线程的一些问题
- 几种关于卷积的深刻而有趣的理解【看过绝对不会再忘了】