相关文章推荐,建议看
冒泡排序
int[] arr={8,9,4,1,15,10,11,0,5,3}; int count=0; //统计比较次数,非必须 int count2=0; //统计交换次数,非必须 for (int i = arr.length-1; i >0 ; i--) { //在数组下标下减一 for (int j = 0; j < i; j++){ count++; //统计循环次数 if (arr[j] > arr[j + 1]) { //交换位置操作 int temp; temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; count2++; } } }
选择排序
int[] arr={8,9,4,1,15,10,11,0,5,3}; int count=0; //统计比较次数 int count2=0; //统计交换次数 for (int i = 0; i < arr.length-1; i++) { int min=i; //最小的一个 for (int j = i+1; j < arr.length; j++) { count++; //比次数 if(arr[j]<arr[min]){ min=j; } if (i != min) { int temp; //临时变量 temp=arr[min]; arr[min]=arr[i]; arr[i]=temp; count2++; //交换次数 } } }
二分法查找(折半查找)
本算法基于排序的基础上使用
/** * 折半查找 * @param arrays 要被查找的目标列表 * @param dest 要被查找的目标 * @return 查找成功返回索引,失败则返回-1 */ public static int arraySeach(int[] ararys, int dest) { //开始下标 int begin=0; //结束下标 int end=arrays.length-1; //中间数 while(begin<=end) { int mid = (begin+end) / 2; if (arrys[mid] == dest) { return mid; } else if (arrays[mid] < dest) { begin = mid + 1; } else { end = mid - 1; } } return -1; }
普通查找
/** * @param arr 传入要查找的数组 * @param dest 被查询的目标 * @return 返回被查询目标的索引,找不到则不返回 */ public static int arrayFind(int[] arr, int dest) { for (int i = 0; i < arr.length; i++) { if(arr[i]==dest){ return i; } } return -1; }
本文作者为Mr.Bai,转载请注明。