##冒泡排序
package sortTest;
import java.util.Arrays;
public class BubbleSort {
public static void main(String[] args) {
int[] arr = new int[] { 4, 6, 5, 7, 9, 8, 2, 1, 3, 0 };
sort(arr);
System.out.println(Arrays.toString(arr));
}
public static void sort(int[] arr) {
//外层循环控制趟数
for (int i = 0; i < arr.length - 1; i++) {
//每一趟循环中选择出最大的数放到最后
for (int j = 1; j < arr.length; j++) {
//两个数比较,将大的向后放置
if (arr[j] < arr[j - 1]) {
int temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
}
}
}
}
}
##选择排序
package sortTest;
import java.util.Arrays;
public class selectSort {
public static void main(String[] args) {
int[] arr = new int[] { 4, 6, 5, 7, 9, 8, 2, 1, 3, 0 };
sort(arr);
System.out.println(Arrays.toString(arr));
}
public static void sort(int[] arr) {
int min;
int index;
for (int i = 0; i < arr.length - 1; i++) {
min = arr[i];
index = i;
for (int j = i + 1; j < arr.length; j++) {
if (min > arr[j]) {
min = arr[j];
index = j;
}
}
// 不是自己本身则交换位置
if (index != i) {
arr[index] = arr[i];
arr[i] = min;
}
}
}
}
##插入排序
package sortTest;
import java.util.Arrays;
public class insertSort {
public static void main(String[] args) {
int[] arr = new int[] { 4, 6, 5, 7, 9, 8, 2, 1, 3, 0 };
sort(arr);
System.out.println(Arrays.toString(arr));
}
public static void sort(int[] arr) {
int index;
int indexVal;
for (int i = 1; i < arr.length; i++) {
index = i - 1;//记录将要插入值的前一个索引值
indexVal = arr[i];//记录将要插入的值
while (index >= 0 && indexVal < arr[index]) {
arr[index + 1] = arr[index];
index--;
}
if (index + 1 != i) {
arr[index + 1] = indexVal;
}
}
}
}
##希尔排序
package sortTest;
import java.util.Arrays;
public class shellSort {
public static void main(String[] args) {
int[] arr = new int[] { 4, 6, 5, 7, 9, 8, 2, 1, 3, 0 };
// sort(arr);
sort2(arr);
System.out.println(Arrays.toString(arr));
}
public static void sort(int[] arr) {
for (int gap = arr.length / 2; gap > 0; gap /= 2) {
for (int i = gap; i < arr.length; i++) {
for (int j = i - gap; j >= 0; j -= gap) {
if (arr[j] > arr[j + gap]) {
int temp = arr[j + gap];
arr[j + gap] = arr[j];
arr[j] = temp;
}
}
}
}
}
public static void sort2(int[] arr) {
int min;
int index;
for (int gap = arr.length / 2; gap > 0; gap /= 2) {
for (int i = gap; i < arr.length; i++) {
index = i - gap;
min = arr[i];
while (index >= 0 && arr[index] > min) {
arr[index + gap] = arr[index];
index -= gap;
}
arr[index + gap] = min;
}
}
}
}