排序算法的时间、空间复杂度及实现

来源:互联网 发布:广告创意提案 知乎 编辑:程序博客网 时间:2024/05/19 18:42

时间及空间复杂度:

排序方法  平均时间最坏情况 辅助存储

简单排序

(冒泡、插入,选择

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); }


0 0