冒泡排序:
package java0718;
/**
* 冒泡排序:每一趟里,两两比较,如果条件成立,则交换,每趟下来得到最大或最小值
*
*/
public class BubbleSort {
public void bubbleSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {//控制循环趟数
int temp = 0;
for (int j = 0; j < arr.length - i; j++) {//控制比较的次数
if(arr[j] > arr[j+1]) {//如果数组前面的值比后面的值大,则交换
temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
}
public static void main(String[] args) {
int[] arr = new int[] {6,5,7,3,8};
BubbleSort bs = new BubbleSort();
bs.bubbleSort(arr);
for (int i : arr) {
System.out.println(i);
}
}
}
选择排序:
package java0718;
public class SelectedSort {
/**
* 选择排序,每次循环得到当前数组中最大值或最小值的下标,然后和第一位或最后一位进行交换
*/
public void selectedSort(int[] arr) {
for (int i = 0; i < arr.length; i++) {//控制循环趟数
int index = i;
int min = arr[i];
for (int j = i + 1; j < arr.length; j++) {//控制对比次数
if(arr[j]<min) {//如果当前值小于min,则把当前元素的下标赋值给index,并把值赋值给min
index = j;
min = arr[j];
}
}
if(i!=index) {//如果当前元素不是本身,则交换
arr[index] = arr[i];
arr[i] = min;
}
}
}
public static void main(String[] args) {
int[] arr = new int[] {6,5,7,3,8};
SelectedSort ss = new SelectedSort();
ss.selectedSort(arr);
for (int i : arr) {
System.out.println(i);
}
}
}
插入排序:
package java0718;
public class InsertSort {
/**
* 插入排序:假设前面n-1个元素已经排好序,n和前面元素进行比较,如果条件成立,则把n插入到对应位置
*/
public void insertSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {//控制循环趟数
int insertNode = arr[i];
int j = i-1;
while(j>=0 && arr[j] >insertNode) {//和后面n-1个元素比较
arr[j+1] = arr[j];//前面元素后移,这时前面元素和后面元素是同一值
j--;
}
if(i!=j+1) {//把被插入元素插入到指定位置
arr[j+1] = insertNode;
}
}
}
public static void main(String[] args) {
int[] arr = new int[] {6,5,7,3,8};
InsertSort is = new InsertSort();
is.insertSort(arr);
for (int i : arr) {
System.out.println(i);
}
}
}
二分查找:
package java0718;
import java.util.Arrays;
public class BinarySearch {
/**
* 二分法查找
*/
public int binarySearch(int[] arr,int target) {
int low = 0;
int high = arr.length - 1;
while(low <= high) {//退出条件
int mid = (low + high)/2;
if(target==arr[mid]) {//如果值相等表示找到
return mid;
}else if(target > arr[mid]) {//如果目标对象比中间值大,则向右查找
low = mid +1;
}else {//否则向左查找
high = mid -1;
}
}
return -1;//找不到返回-1
}
public static void main(String[] args) {
int[] arr = new int[] {6,5,7,3,8,11,45,37,98,68,2,44};
Arrays.sort(arr);
BinarySearch bs = new BinarySearch();
int key = bs.binarySearch(arr, 11);
for (int i : arr) {
System.out.print(i+ " ");
}
System.out.println();
System.out.println(key);
}
}