内容参考此链接,感谢🙏。
一、插入排序
1. 直接插入排序
public static void insertionSort(int[] arr){
for(int i=1;i<arr.length;i++){
int temp = arr[i];
for(int j=i;j>=0;j--){
if(j>0&&arr[j-1]>temp){
arr[j]=arr[j-1];
}else{
arr[j]=temp;
break;
}
}
}
}
2. 希尔排序
public class ShellSort {
public static void main(String[] args)
{
int[] ins = {2,3,5,1,23,6,78,34,23,4,5,78,34,65,32,65,76,32,76,1,9};
int[] ins2 = shellSort(ins);
for(int in: ins2){
System.out.print(in+" ");
}
}
public static int[] shellSort(int[] arr){
int gap = arr.length/2;
for(;gap>0;gap/=2){
for(int i=0;i<gap;i++){
for(int j=i+gap;j<arr.length;j+=gap){
int temp = arr[j];
int k = j - gap;
while(k>=0&&arr[k]>temp){
arr[k+gap] = arr[k];
k-=gap;
}
arr[k + gap] = temp;
}
}
}
return arr;
}
}
二、选择排序
1. 简单选择排序/直接选择排序
public static void selectionSort(int[] arr){
for(int i=0;i<arr.length;i++){
int min = i;
for(int j=i+1;j<arr.length;j++){
if(arr[j]<arr[min]){
min=j;
}
}
if(min!=i){
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
}
}
2. 堆排序(不想看了 想吐了🤮)
public static void heapSort(int[] arr){
for(int i = arr.length; i > 0; i--){
max_heapify(arr, i);
int temp = arr[0];
arr[0] = arr[i-1];
arr[i-1] = temp;
}
}
private static void max_heapify(int[] arr, int limit){
if(arr.length <= 0 || arr.length < limit) return;
int parentIdx = limit / 2;
for(; parentIdx >= 0; parentIdx--){
if(parentIdx * 2 >= limit){
continue;
}
int left = parentIdx * 2;
int right = (left + 1) >= limit ? left : (left + 1);
int maxChildId = arr[left] >= arr[right] ? left : right;
if(arr[maxChildId] > arr[parentIdx]){
int temp = arr[parentIdx];
arr[parentIdx] = arr[maxChildId];
arr[maxChildId] = temp;
}
}
System.out.println("Max_Heapify: " + Arrays.toString(arr));
}
三、交换排序
1. 冒泡排序
public class BubbleSort {
public void bubbleSort(Integer[] arr, int n) {
if (n <= 1) return;
for (int i = 0; i < n; ++i) {
boolean flag = false;
for (int j = 0; j < n - i - 1; ++j) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = true;
}
}
if (!flag) break;
}
}
public static void main(String[] args) {
Integer arr[] = {2, 4, 7, 6, 8, 5, 9};
SortUtil.show(arr);
BubbleSort bubbleSort = new BubbleSort();
bubbleSort.bubbleSort(arr, arr.length);
SortUtil.show(arr);
}
}
2. 快速排序
|