时间及空间复杂度:
排序方法 | 平均时间 | 最坏情况 | 辅助存储 |
简单排序 (冒泡、插入,选择 | 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); }