时间及空间复杂度:
| 排序方法 | 平均时间 | 最坏情况 | 辅助存储 |
|
简单排序 (冒泡、插入,选择 | O(n²) | O(n²) | O(1) |
| 快排 | O(nlogn) | O(n²) | O(logn) |
| 堆排序 | O(nlogn) | O(nlogn) | O(1) |
| 归并排序 | O(nlogn) | O(nlogn) | O(n) |
冒泡排序:
void Bubble(int *arr, int length)
{
for(int i=0; i<length; i++) {<span style="white-space:pre"> </span>for(int j=length-1; j>=i; j--)<span style="white-space:pre"> </span>{<span style="white-space:pre"> </span> if(arr[j+1] > arr[j])<span style="white-space:pre"> </span> {<span style="white-space:pre"> </span>swap(arr[j+1, j]); <span style="white-space:pre"> </span> }<span style="white-space:pre"> </span>} }}快速排序:
void Qsort(int *arr, int low, int high)
{
int left = low;
int right = high;
int pivotpos = arr[left];
while(left < right)
{
while(left<right && arr[right] > pivotpos)
{
right--;
}
arr[left] = arr[right];
while(left<right && arr[left] < pivotpos)
{
left++;
}
arr[right] = arr[left];
arr[left] = pivotpos;
Qsort(arr, low, left-1);
Qsort(arr, left+1, high);
}
}
void QuickSort(int *arr, int n)
{
Qsort(arr, 0, n);
}
本文详细介绍了几种常见的排序算法,包括冒泡排序、快速排序、堆排序和归并排序的时间及空间复杂度,并提供了部分算法的实现代码。
541

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



