十大经典排序算法
# 十大经典排序算法
十种常见排序算法可以分为两大类:
- 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。
- 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。
https://www.cnblogs.com/onepixel/articles/7674659.html
# 1.冒泡排序(Bubble Sort)
冒泡排序是一种简单的排序算法。
算法描述:
从数据的第一个开始,每次比较相邻的2个元素,如果左边元素比右边大,则进行位置交换(也可以小才进行位置交换),否则继续进行下一组的比较。(如:第一次比较1和2,第二次比较2和3)
当比完所有元素后,再次从第一个元素开始,对其后的n-1个元素重复上面的操作。
直到n-1为1,到此排序完成。
每一轮的比较都会将其中最大(小)的元素排到队尾。
public static void bubbleSort(Integer[] arr) {
for (int i = 0; i <arr.length-1 ; i++) {
for (int j = 0; j < arr.length-1-i; j++) {
if(arr[j]>arr[j+1]){
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
}
// Java版本
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
- 时间复杂度:冒泡排序的时间复杂度为O(n²),其中n表示列表中的元素数量。这是因为冒泡排序在每一次迭代中都要遍历整个列表,总共需要进行n-1次迭代。
- 空间复杂度:空间复杂度为O(1),即它需要的额外存储空间与列表中元素的数量无关,始终保持在一个固定值上。
# 2.选择排序(Selection Sort)
# 3.插入排序(Insertion Sort)
# 4.希尔排序(Shell Sort)
# 5.归并排序(Merge Sort)
# 6.快速排序(Quick Sort)
# 7.堆排序(Heap Sort)
# 8.计数排序(Counting Sort)
# 9.桶排序(Bucket Sort)
# 10.基数排序(Radix Sort)
上次更新: 2025/03/07, 06:05:43