public static int[] bubbleSort(int[] arr1){
for (int i = 0; i < arr1.length - 1; i++) {
for (int j = 0; j < arr1.length - 1 - i; j++) {
if(arr1[j]>arr1[j+1]){
int temp = arr1[j];
arr1[j] = arr1[j + 1];
arr1[j + 1] = temp;
}
}
}
return arr1;
}
2.二分查找
//二分查找,查找的集合必须是有序的
public static int binarySearch(int[] arr2,int ta){
int first =0;
int last=arr2.length-1;
while (first <= last) {
int m = (first + last)/2;
if (ta == arr2[m]) {
return m;
} else if (ta > arr2[m]) {
first=m+1;
}else {
last=m-1;
}
}
return -1;
}
3.递归
//递归,方法直接或者间接的调用自己本身则称为递归,要有终止条件
public static int recursion(int[] arr2,int ta,int frist,int last){
int m=(frist+last)/2;
if (ta < arr2[frist] || ta > arr2[last] || frist > last) {
return -1;
}
if (arr2[m] == ta) {
return m;
} else if (ta > arr2[m]) {
return recursion(arr2, ta, m+1, last);
}else{
return recursion(arr2, ta, frist, m - 1);
}
}
4.单链表反转-迭代解法
单链表结构
public class Node {
private Object data;
private Node next;
public Node(Object data) {
this.data = data;
}
public Node(Object data, Node next) {
this.data = data;
this.next = next;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}