【数据结构】排序算法全解析:概念与接口

1.排序的概念及其运用

1.1 排序的概念

排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。

稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次

序保持不变,即在原序列中,r[i]=r[j],且 r[i]在 r[j]之前,而在排序后的序列中,r[i]仍在 r[j]之前,则称这种排

序算法是稳定的;否则称为不稳定的。

内部排序:数据元素全部放在内存中的排序。

外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。

1.2 常见的排序算法

排序的相关接口:

cpp 复制代码
//排序实现接口
// 插入排序 
void InsertSort(int* a, int n);
// 希尔排序
void ShellSort(int* a, int n); 
// 选择排序 
void SelectSort(int* a, int n); 
// 堆排序 
void AdjustDwon(int* a, int n, int root); 
void HeapSort(int* a, int n); 
// 冒泡排序 
void BubbleSort(int* a, int n);
// 快速排序递归实现 
// 快速排序hoare版本 
int PartSort1(int* a, int left, int right); 
// 快速排序挖坑法 
int PartSort2(int* a, int left, int right); 
// 快速排序前后指针法 
int PartSort3(int* a, int left, int right); 
void QuickSort(int* a, int left, int right); 
// 快速排序 非递归实现 
void QuickSortNonR(int* a, int left, int right);
// 归并排序递归实现 
void MergeSort(int* a, int n);
// 归并排序非递归实现 
void MergeSortNonR(int* a, int n);
// 计数排序 
void CountSort(int* a, int n);

排序算法的原理和实现:

【数据结构】揭秘直接插入排序:玩扑克也能学算法-CSDN博客

【数据结构】希尔排序:高效分组的插入排序优化-CSDN博客

【数据结构】直接选择排序-CSDN博客

【数据结构】快速排序算法精髓解析-CSDN博客

【数据结构】递归与非递归:归并排序全解析-CSDN博客