public class TestDemo1 {
//插入排序
public static void insertSort(int[] arr){
for(int i=1;i<arr.length;i++){
int temp=arr[i];
int j;
for(j=i-1;j>=0;j--){
if(arr[j]>temp){
arr[j+1]=arr[j];
}else{
break;
}
}
arr[j+1]=temp;
}
}
//希尔排序
public static void shellSort(int arr[]){
int[] gap={3,2,1};
for(int i=0;i<gap.length;i++){
insertSort(arr,gap[i]);
}
}
public static void insertSort(int[] arr,int gap){
for(int i=gap;i<arr.length;i++){
int temp=arr[i];
int j;
for(j=i-gap;j>=0;j=j-gap){
if(temp<arr[j]){
arr[j+gap]=arr[j];
}else{
break;
}
}
arr[j+gap]=temp;
}
}
//选择排序
public static void selectSort(int[] arr){
int minIndex;
for(int i=0;i<arr.length;i++){
minIndex=i;
for(int j=i+1;j<arr.length;j++) {
if (arr[minIndex] > arr[j]) {
minIndex = j;
}
}
if(minIndex!=i) {
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
//堆排序
//向下调整函数
public static void shiftDown(int len,int[] arr){
int parent;
for(int i=(len-1-1)/2;i>=0;i--) {
parent=i;
int child = parent * 2 + 1;
while (child < len) {
if (child + 1 < len && arr[child] <arr[child+1]) {
child++;
}
if (arr[child] > arr[parent]) {
int temp = arr[child];
arr[child] = arr[parent];
arr[parent] = temp;
parent = child;
child = parent * 2 + 1;
} else {
break;
}
}
}
}
public static void heapSort(int[] arr){
shiftDown(arr.length,arr);//调整为大根堆
for(int i=arr.length-1;i>0;i--){//堆排序
int temp=arr[i];
arr[i]=arr[0];
arr[0]=temp;
shiftDown(i,arr);
}
}
//冒泡排序
public static void bubbleSort(int[] arr){
boolean flag = false;
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
flag=true;
}
}
if(flag==false){
break;
}
}
}
//快速排序
public static int partition(int[] arr,int i,int j){
int privot=arr[i];
while(i<j){
//
while(i<j && arr[j]>=privot){
j--;
}
arr[i]=arr[j];
while(i<j && arr[i]<=privot){
i++;
}
arr[j]=arr[i];
}
arr[i]=privot;
return i;
}
public static void quickSort(int[] arr,int start,int end){
if(start>end){
return;
}
int partition=partition(arr,start,end);// 得到基准
quickSort(arr,start,partition-1);// 向基准左递归
quickSort(arr,partition+1,end);// 向基准右递归
}
}
图解: