---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
1.数组
折半查找
package cn.itcast.test;
public class HalfSerch {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = new int[] { 0, 2, 4, 6, 7, 12, 23 };
int index = halfSearch(arr, 3);
System.out.println(index);
}
private static int halfSearch(int[] args, int key) {
int min = 0, max = args.length - 1;
int mid = (min + max) / 2;
while (args[mid] != key) {
if (key > args[mid])// key大于中间数
min = mid + 1;// 小角标指向mid+1
else
max = mid - 1;
if (min > max)
return -(min + 1);// key 没被找到返回应该插入的位置+1的负数
mid = (min + max) / 2;
}
return mid;// key 找到返回mid
}
// 折半的加一种做法,比较高效
private static int halfSearch1(int[] args, int key) {
int min = 0, max = args.length - 1, mid;
while (min <= max) {
mid = (min + max) / 2;
if (key > args[mid])
min = mid + 1;
else if (key < args[mid])
max = mid - 1;
else
return mid;
}
return -(min + 1);
}
}
排序
package cn.itcast.test;
import java.util.Arrays;
public class ArraysSort {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = new int[] { 3, 1, 10, 24, 23, 11, 43, 22 };
selectSort(arr);
printArray(arr);
bubbleSort(arr);
printArray(arr);
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
printArray(arr);
}
private static void printArray(int[] arr) {
System.out.print("[");
for (int i : arr) {
if (i == arr[arr.length - 1])
System.out.println(i + "]");
else
System.out.print(i + ", ");
}
}
// 冒泡排序
public static void bubbleSort(int[] arr) {
for (int x = 0; x < arr.length; x++) {
for (int y = 0; y < arr.length - x - 1; y++) {
if (arr[y] < arr[y + 1]) {
swap(arr, y, y + 1);
}
}
}
}
// 选择排序
public static void selectSort(int[] arr) {
for (int x = 0; x < arr.length; x++) {
for (int y = x + 1; y < arr.length; y++) {
if (arr[x] > arr[y]) {
swap(arr, x, y);
}
}
}
}
private static void swap(int[] arr, int x, int y) {
// TODO Auto-generated method stub
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------