Java中常用的排序算法包括:
1. 冒泡排序(Bubble Sort):时间复杂度为O(n^2),是一种比较简单的排序算法,但是效率较低。
2. 选择排序(Selection Sort):时间复杂度为O(n^2),基本思想是选择未排序中的最小(大)元素,依次放到已排序的序列末尾。
3. 插入排序(Insertion Sort):时间复杂度为O(n^2),基本思想是将未排序的元素插入已排序的序列中,将插入位置之后的元素依次后移。
4. 快速排序(Quick Sort):时间复杂度为平均O(nlogn),最坏O(n^2),是一种比较高效的排序算法,基本思想是利用分治法将问题分解为子问题,递归地解决问题。
5. 堆排序(Heap Sort):时间复杂度为O(nlogn),基本思想是利用堆的性质,建立一个大顶堆(小顶堆),每次取出堆顶元素,重构堆,直到完成排序。
6. 归并排序(Merge Sort):时间复杂度为O(nlogn),基本思想是将待排序序列递归地分成两个子序列,分别排序后再合并成一个已排序的序列。
7. 希尔排序(Shell Sort):时间复杂度取决于增量序列,最好O(nlogn),最坏O(n^2),是插入排序的改进版本,通过缩小增量来减小步长,提高效率。
8. 计数排序(Counting Sort):时间复杂度为O(n+k),适用于元素范围比较小的情况,基本思想是利用计数器统计元素出现的次数,然后进行排序。
9. 桶排序(Bucket Sort):时间复杂度为O(n+k),适用于元素范围比较大的情况,基本思想是将元素根据大小分到不同的桶中,每个桶内部再进行排序,最终合并桶中的所有元素。
以上是Java中常用的排序算法,不同的算法适用于不同的排序需求和排序数据规模,根据具体情况可以选择合适的排序算法。