二分查找法、选择查找法和冒泡排序
一、查找:在一个数组中,查找某个数有两种
1、选择查找法:
1.1 在数组中逐个去匹配需要找的值,都是从头开始匹配
//选择查法 public static int selectSearch(int[] ls,int key) { for(int i=0;i<ls.length;i++) { if(ls[i]==key) return i; } return -1; }
2、二分查找法
2.1 将数组一分为二,先用中间数匹配查找数,若大于中间数,则在中间数和末尾数间查找,则继续一分为二,找出中间值,再继续匹配
//二分查找法,前提是数据必须是有序的 public static int binarySearch(int[] ls,int key) { int min = 0; int max = ls.length-1; int mid = (max+min)>>1; while(min < max) { if(ls[mid]==key) return mid; if(ls[mid]>key) max = mid -1; else if(ls[mid]<key) min = mid+1; mid = (max+min)>>1; } return -1; }
二、排序
1、冒泡排序,将相邻的数比较,将最大数冒在最上面
//冒泡排序 public static void topSort(int[] chs) { for(int i=0;i<chs.length-1;i++) { for(int y=0;y<chs.length-1-i;y++) { if(chs[y]>chs[y+1]) { /* int temp = chs[y]; chs[y] = chs[y+1]; chs[y+1] = temp; */ trans(chs,y,y+1); } } } } private static void trans(int[] chs,int a,int b) { int temp = chs[a]; chs[a] = chs[b]; chs[b] = temp; }
2、普通查找法:先从第一位和其他位依次比较
public static void sort(int[] chs) { for(int i=0;i<chs.length-1;i++) { for(int y=i+1;y<chs.length;y++) { if(chs[i]>chs[y]) { /* int temp = chs[i]; chs[i] = chs[y]; chs[y] = temp; */ trans(chs,i,y); } } } }