数据结构绝对是重中之重!
排序算法主要有9种
冒泡排序 交换排序 选择排序 插入排序 快速排序 归并排序 堆排序 基排序 希尔排序
每个排序都有自己的适宜场合,有不同的时间复杂度和空间复杂度。
时间复杂度主要是从比较次数和移动次数来看
接下来一一介绍
一、冒泡排序
算法思想:
1.待排序的数据看作气泡,通过n-1趟比较,从而使较小的数据浮在上层(前),较大的数据沉在下层(后)。
2.每一趟比较,从下层开始比较两个相邻的数据,如果上层的数据大于下层的数据,则交换;否则,不移动顺序继续往上比较。
void BubbleSort(int n,List &A){
for (int i=0;i<n;i++)
{
for (int j=n-1;j>=i+1;j--)
{
if (A[j].key<A[j-1].key)
{
swap(A[j],A[j-1]);
}
}
}
}
| 比较次数 | 移动次数 | |||
| 最好情况 | n-1 | 0 | ||
| 最坏情况 | n(n-1)/2 | 3n(n-1)/2 |
| 平均时间复杂度 | 最差时间复杂度 | 空间复杂度 |
| O(N*N) | O(N*N) | O(1) |
二、快速排序
算法思想:(分治算法)
1.找基准元素。FindPivot(int i,int j)
作用是,使数列左侧都比基准元素要小,右侧都比基准元素要大。
如何选取?从左侧开始查找两个不同数值中的较大值作为基准元素。如果找不到两个不相同的元素,则返回0。排序结束。例如 3 3 2 5 6 1 0 则选取3为基准元素。
2.划分
(1)l表示从左边开始遍历的下标,r表示从右边开始遍历的下标。l为指向数列中从左边开始第一个比基准元素大的值;r为数列中从右边开始第一个比基准元素小的值。

本文详细介绍了九种排序算法:冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序、基排序、希尔排序。每种排序算法都有其独特的思想、时间复杂度和空间复杂度。例如,冒泡排序通过相邻元素比较和交换实现排序;快速排序利用分治策略,选取基准元素进行划分;归并排序则采用递归的归并过程来排序。这些排序算法在不同的场景下有着各自的优势。
最低0.47元/天 解锁文章
1044

被折叠的 条评论
为什么被折叠?



