public static void insertSort(int[] array) { //插入排序
int length = array.length;
// 此循环从1开始,就是将0下标的元素当做一个参照
for (int i = 1; i < length; i++) {
//if (array[i] < array[i - 1]) { // 将当前下标的值与参照元素比较,如果小于就进入里面
int vancy = i; // 用于记录比较过程中那个空缺出来的位置
int temp = array[vancy]; // 设置哨兵,将当前下标对应的值赋给哨兵
// 这个循环很关键,从当前下标之前一个元素开始倒序遍历,比较结果如果比当前大的,就后移
for (int j = i - 1; j >= 0 && array[j] > temp; j--) {
vacancy = j;
array[j + 1] = array[j]; // 后移比当前元素大的元素
}
array[vancy] = temp; // 将哨兵,也就是当前下标对应的值置入空缺出来的位置
// }
}
for(int c:array) {
System.out.print(c+" ");
}
}
public static void compareSort(int[] array){ //比较排序
int length = array.length;
for (int i = 0; i < length; i++) {
for (int j = i + 1; j < length; j++) {
if (array[i] > array[j]) {
int temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
}
for(int c:array) {
System.out.print(c+" ");
}
}
public static void selectSort(int[] array) { //选择排序
int temp=0;
int length=array.length;
for(int i=0;i<length-1;i++) {
int min=i;
for(int j=length-1;j>i;j--) {
if(array[min]>array[j]) {
min=j;
}
}
if(min!=i) {
temp=array[i];array[i]=array[min];array[min]=temp;
}
}
for(int c:array) {
System.out.print(c+" ");
}
}
public static void bubbleSort(int[] array) { //冒泡排序
int length=array.length;
for(int i=0;i<length-1;i++) {
for(int j=0;j<length-1-i;j++) {
if(array[j]>array[j+1]) {
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
for(int c:array) {
System.out.print(c+" ");
}
}
public static void sort(int[] a,int low,int high){ // 快速排序
int start = low;
int end = high;
int key = a[low];
while(end>start){
//从后往前比较
while(end>start&&a[end]>=key) //如果没有比关键值小的,比较下一个,直到有比关键值小的交换位置,然后又从前往后比较
end--;
if(a[end]<=key){
int temp = a[end];
a[end] = a[start];
a[start] = temp;
}
//从前往后比较
while(end>start&&a[start]<=key)//如果没有比关键值大的,比较下一个,直到有比关键值大的交换位置
start++;
if(a[start]>=key){
int temp = a[start];
a[start] = a[end];
a[end] = temp;
}
//此时第一次循环比较结束,关键值的位置已经确定了。左边的值都比关键值小,右边的值都比关键值大,但是两边的顺序还有可能是不一样的,进行下面的递归调用
}
//递归
if(start>low) sort(a,low,start-1);//左边序列。第一个索引位置到关键值索引-1
if(end<high) sort(a,end+1,high);//右边序列。从关键值索引+1到最后一个 start=end
}