1.排序
1.1将数组元素正序(从小到大)排列
1、Arrays.sort(int[] a)这种形式是对一个数组的所有元素进行排序,并且是按从小到大的顺序。2、Arrays.sort(int[] a, int fromIndex, int toIndex)这种形式是对数组部分排序,也就是对数组a的下标从fromIndex到toIndex-1的元素排序,注意:下标为toIndex的元素不参与排序哦!
1.2数组反转
package kuaisupaixu;import java.util.Arrays;public class Test {public static void main(String[] args) {int[] arr = {24, 69, 80, 57, 13};//数组排列Arrays.sort(arr);//13,24,57,69,80//将数组按照从大到小的顺序排列/*//第一种方法:数组正序排列后将数组从最后一个开始遍历int[] brr=new int[5];for (int i = arr.length-1,j=0; i >=0 ; i--,j++) {brr[j]=arr[i];System.out.print(brr[j]+"\t");}*///第二种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 i = 0; i < arr.length ; i++) {System.out.print(arr[i]+"\t");}}}
2.二分查找
package erfenchazhao;/*** @author Lynn* @create 2020-12-05-18:07*/public class Test {public static void main(String[] args) {//二分查找//前提:所要查找的数组必须有序int[] arr = {-99, 47, 5, 6, -32, 8, 1, 54};//要查找的数--8int dest = 9;int head = 0;//初始的首索引int end = arr.length - 1;//初始的末索引boolean flag=true;while (head <= end){int middle=(head+end)/2;if (dest==arr[middle]){flag=false;System.out.println(dest+"的索引值为:"+middle);break;}else if(arr[middle]>dest){end=middle-1;}else {head=middle+1;}}if(flag){System.out.println("没有这个数!");}}}
3.冒泡排序
原理:对一个数组的元素两两(相邻的)进行比较,最大的数放在数组最右边
package maopaopaixu;import java.security.PublicKey;/*** @author Lynn* @create 2020-12-05-14:18*/public class ArrayDemo {public static void main(String[] args) {int[] arr = {24, 69, 80, 57, 13};System.out.println("排序前:" + arrToString(arr));/*//第一次比较--arr.length-1防止索引越界for (int i = 0; i < arr.length-1-0; i++) {if (arr[i]>arr[i+1]){int temp=arr[i];arr[i]=arr[i+1];arr[i+1]=temp;}}System.out.println("第一次比较后:"+arrToString(arr));//第二次比较--arr.length-1-1第一次比较后,最后一个数不用再次比较for (int i = 0; i < arr.length-1-1; i++) {if (arr[i]>arr[i+1]){int temp=arr[i];arr[i]=arr[i+1];arr[i+1]=temp;}}System.out.println("第二次比较后:"+arrToString(arr));//第三次比较--arr.length-1-2第二次比较后,最后两个数不用再次比较for (int i = 0; i < arr.length-1-2; i++) {if (arr[i]>arr[i+1]){int temp=arr[i];arr[i]=arr[i+1];arr[i+1]=temp;}}System.out.println("第三次比较后:"+arrToString(arr));//第四次比较--arr.length-1-3第三次比较后,最后三个数不用再次比较for (int i = 0; i < arr.length-1-3; i++) {if (arr[i]>arr[i+1]){int temp=arr[i];arr[i]=arr[i+1];arr[i+1]=temp;}}System.out.println("第四次比较后:"+arrToString(arr));*///代码优化//外层for循环是需要比较的次数:arr.length-1for (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;}}}System.out.println("排序后:"+arrToString(arr));}//把数组中的元素按照指定的规则组成一个字符串:[元素1,元素2····]public static String arrToString(int[] arr) {StringBuilder sb = new StringBuilder();sb.append("[");for (int i = 0; i < arr.length; i++) {if (i == arr.length - 1) {sb.append(arr[i]);} else {sb.append(arr[i]).append(",");}}sb.append("]");return sb.toString();}}
