排序算法
排序算法是计算机科学中用于将一组数据按特定顺序排列的算法。常见的排序算法包括:
1. 比较排序
冒泡排序(Bubble Sort)
- 
通过重复比较相邻元素并交换顺序,逐步将最大元素“冒泡”到末尾。
 - 
时间复杂度:O(n²)
 
选择排序(Selection Sort)
- 
每次从未排序部分选择最小元素,放到已排序部分的末尾。
 - 
时间复杂度:O(n²)
 
插入排序(Insertion Sort)
- 
将未排序部分的元素逐个插入到已排序部分的适当位置。
 - 
时间复杂度:O(n²)
 
快速排序(Quick Sort)
- 
通过选择一个“基准”元素,将数组分为两部分,递归排序。
 - 
时间复杂度:平均 O(n log n),最坏 O(n²)
 
归并排序(Merge Sort)
- 
将数组分成两半,分别排序后合并。
 - 
时间复杂度:O(n log n)
 
堆排序(Heap Sort)
- 
利用堆数据结构,将数组转换为最大堆,逐步提取最大元素。
 - 
时间复杂度:O(n log n)
 
2. 非比较排序
计数排序(Counting Sort)
- 
适用于小范围整数,通过计数每个元素的出现次数进行排序。
 - 
时间复杂度:O(n + k),k 为数据范围
 
桶排序(Bucket Sort)
- 
将数据分到多个桶中,分别排序后合并。
 - 
时间复杂度:O(n + k)
 
基数排序(Radix Sort)
- 
按位排序,从最低位到最高位依次进行。
 - 
时间复杂度:O(nk),k 为最大位数
 
3. 其他排序
希尔排序(Shell Sort)
- 
插入排序的改进版,通过分组排序逐步减少间隔。
 - 
时间复杂度:取决于间隔序列,通常优于 O(n²)
 
Tim Sort
- 
结合归并排序和插入排序,适用于实际数据。
 - 
时间复杂度:O(n log n)
 
总结
- 
时间复杂度:从 O(n log n) 到 O(n²) 不等。
 - 
空间复杂度:有些是原地排序(如快速排序),有些需要额外空间(如归并排序)。
 - 
稳定性:稳定排序(如归并排序)保持相等元素的相对顺序,不稳定排序(如快速排序)则不一定。
 
                    
                
                
            
        
浙公网安备 33010602011771号