冒泡排序
import java.util.Arrays;
public class BubbleSort {
public static void sort(int [] arrs){
for(int i = arrs.length - 1;i > 0;i --){
for(int j = 0;j < i;j ++){
if(arrs[j] > arrs[j + 1]){
int temp = arrs[j];
arrs[j] = arrs[j+1];
arrs[j+1] = temp;
}
}
}
}
public static void main(String[] args) {
int []a = new int[] {9,5,1,2,7,3,4,8,6};
BubbleSort.sort(a);
Arrays.stream(a).forEach(System.out::println);
}
}
插入排序
import java.util.Arrays;
public class InsertionSort {
public static void sort(int [] arrs){
for(int i = 0;i < arrs.length;i ++){
for(int j = i - 1;j >= 0;j --){
if(arrs[j] > arrs[j + 1]){
int temp = arrs[j];
arrs[j] = arrs[j + 1];
arrs[j + 1] = temp;
}
}
}
}
public static void main(String[] args) {
int [] a = new int[] {10,8,100,78,66,33,88};
InsertionSort.sort(a);
Arrays.stream(a).forEach(System.out::println);
}
}
快速排序
import java.util.Arrays;
public class QuickSort {
public static void sort(int [] a,int left,int right){
if(left > right){
return;
}
int i = left,j = right;
int base = a[left];
while(i != j){
while(j > i && a[j] >= base){
j --;
}
while(i < j && a[i] <= base){
i ++;
}
if(i < j){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
a[left] = a[i];
a[i] = base;
sort(a,left,i - 1);
sort(a,i + 1,right);
}
public static void sort(int [] a){
sort(a,0,a.length - 1);
}
public static void main(String[] args) {
int [] a = {3,5,9,7,4,1,0,2};
QuickSort.sort(a);
System.out.println(Arrays.toString(a));
}
}
选择排序
import java.util.Arrays;
public class SelectionSort {
public static void sort(int[] arrs){
for(int i = 0;i < arrs.length;i ++){
int minIndex = i;
for(int j = i;j < arrs.length;j ++){
if(arrs[j] < arrs[minIndex]){
minIndex = j;
}
}
if(minIndex != i){
int temp = arrs[i];
arrs[i] = arrs[minIndex];
arrs[minIndex] = temp;
}
}
}
public static void main(String[] args) {
int [] a = new int[]{1,10,8,29,48,10,5,18,4};
SelectionSort.sort(a);
Arrays.stream(a).forEach(System.out::println);
}
}
希尔排序
import java.util.Arrays;
public class ShellSort {
public static void sort(int [] arrs){
int gap = arrs.length / 2;
int current;
while(gap > 0){
for(int j = gap;j < arrs.length;j ++){
current = arrs[j];
int preIndex = j - gap;
while (preIndex >= 0 && current < arrs[preIndex]){
arrs[preIndex + gap] = arrs[preIndex];
preIndex -= gap;
}
arrs[preIndex + gap] = current;
}
gap = gap / 2;
}
}
public static void main(String[] args) {
int [] a = new int[] {19,80,2,7,4,1,10,12,88,44,33,29,80};
ShellSort.sort(a);
System.out.println(Arrays.toString(a));
}
}