1。线性查找:最简单的查找方式,不需要数组有序,其思想是从头对数组进行对比来找到想要的字符或者数字。
String []arr=new String[]{"aa","bb","cc","dd","ee"}; String s1="ee"; for(int i=0;i<arr.length;i++){ if(s1.equals(arr[i])){ System.out.println(arr[i]);
2。二分法查找:前提是所查找的数组必须有序。确定首索引A,尾索引B。定义中间索引C为首索引和尾索引的和的一半。再将需要找的数与中间索引位置的数对比,若需要找的数大于中间索引位置的数则将首索引改为中间索引+1,再进行对比。反之则将尾索引改为中间索引-1,再进行对比找出所需要的数。
int []arr1=new int[]{1,3,5,9,11,15,43,65,77,124}; int s2=65; int head=0;//首索引 int end=arr1.length-1;//尾索引 boolean flag=true; while(head<=end){//终止条件 int middle=(head + end)/2;//中间索引 if(s2==arr1[middle]){ flag=false; System.out.println("找到"+arr1[middle]+"了"); break; }else if(s2>arr1[middle]){ head=middle+1; }else { end=middle-1; } } if(flag) { System.out.println("没有找到"); } }
3。冒泡排序:基本思想是通过依次对比相邻元素(从小到大的顺序),若发现逆序则交换,在交换后与后面元素进行对比,直至到最后元素。每个元素进行一轮对比,进行元素个数-1轮对比。
public static void main(String[] args) { int[]arr=new int[]{34,55,53,1,32,22,57,87,99,43,21}; //冒泡排序 for(int i=0;i<arr.length-1;i++)//轮数 { for(int j=0;j<arr.length-1-i;j++)//arr.length-1-i,根据进行的轮数,每次需要对比的次数随i增加而减少。 { 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;i++) { System.out.print(arr[i]+" "); }