【排序算法】持续更新中...
【排序算法】选择排序(Select Sort)_萌小崔的博客-CSDN博客
【排序算法】希尔排序(shell Sort)_萌小崔的博客-CSDN博客
【排序算法 】快速排序(Quick Sort)_萌小崔的博客-CSDN博客
【排序算法】快速排序(Quick Sort)_优化版_萌小崔的博客-CSDN博客
【排序算法】优化版冒泡排序(Bubble Sort)_萌小崔的博客-CSDN博客
【排序算法】归并排序(Java-递归版)_萌小崔的博客-CSDN博客
【排序算法】插入排序(Insert Sort)
-
把待排序的数组分成已排序和未排序两部分,初始的时候把第一个元素认为是已排好序的。
-
从第二个元素开始,在已排好序的子数组中寻找到该元素合适的位置并插入该位置。
-
重复上述过程直到最后一个元素被插入有序子数组中。
public static int[] InsertSort(int[] arr,boolean reverse) {
//从1开 0默认有序
// 从下标为1的元素开始选择合适的位置插入,因为下标为0的只有一个元素,默认是有序的
for (int i = 1; i < arr.length; i++) {
// 记录要插入的数据
int value = arr[i];
// 从已经排序的序列最右边的开始比较,找到比其小的数
int max = i;
while (max>0 && (reverse?arr[max-1]>value:arr[max-1]<value)){
arr[max]=arr[max-1];
max--;
}
// 存在比其小的数,插入
arr[max]=value;
}
return arr;
}