冒泡排序
import java.util.Arrays;
public class MaoPaoPaiXu {
public static void main(String[] args) {
int[] value = {1,5,8,7,6,4,0,5,8,4,6};
sort(value);
System.out.println(Arrays.toString(value));
}
public static void sort(int value[]){
//temp 存儲最小變量
int temp;
for (int i = 0; i < value.length; i++) {
for (int j = 0; j < value.length-1-i; j++) {
//按照大小替換位置
if (value[j]>value[j+1]) {
temp=value[j];
value[j]=value[j+1];
value[j+1]=temp;
}
}
}
}
}
数组填充
public class MyFill {
public static void myFill(int[] a,int start,int end,int key){
for (int i = start; i < end; i++) {
a[i] = key;
}
}
}
二分法查找
/**
* 二分法查找
* @author Administrator
*
*/
public class BinarySearch {
public static int myBinarySearch(int[] a, int key) {
int start = 0;
int end = a.length - 1;
while (start <= end) {
// >>>带符号右移
int mid = (end + start) >>> 1;
int midValue = a[mid];
if (midValue < key)
start = mid + 1;
else if (midValue > key)
end = mid - 1;
else
return mid;
}
return -1;
}
}
数组排序与二分法查找的应用
import java.util.Arrays;
/**
* 数组排序与数据查询
* @author Administrator
*
*/
public class MySort {
public static void main(String[] args) {
int [] a = {1,5,4,78,51,11,888,7,9};
//增强的for循环,等价于遍历数组
/*for (int i = 0; i < a.length; i++) {
int m = a[i];
System.out.println(m);
}*/
for (int m : a) {
System.out.println(m);
}
System.out.println(find(a, 78));
MyFill.myFill(a, 1, 3, 5);
System.out.println(Arrays.toString(a));
sort(a);
System.out.println(Arrays.toString(a));
System.out.println(BinarySearch.myBinarySearch(a, 51));
}
//排序
public static void sort(int[] a){
int temp;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length-1-i; j++) {
if (a[j]>a[j+1]) {
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
//逐个查找
public static int find(int[] a, int s){
for (int i = 0; i < a.length; i++) {
if (s==a[i]) {
return i;
}
}
return -1;
}
}