排序算法
Posted gdut-gordon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序算法相关的知识,希望对你有一定的参考价值。
快速排序
平均时间复杂度O(nlogn);
最好情况时间复杂度O(nlogn),pivotkey基本处于顺序表中间;
最坏情况时间复杂度O(n),顺序表处于正序和倒序;
最好情况空间复杂度O(logn),要执行logn次递归调用;
最坏情况空间复杂度O(n),要执行n-1次递归调用;
#include <iostream> #include <vector> using namespace std; typedef struct vector<int> r = 0; int length; SqList; void swap(SqList * L, int i, int j) int temp = L->r[i]; L->r[i] = L->r[j]; L->r[j] = temp; int getPivot(SqList *L, int low, int high) int pivot = L->r[low]; while(low < high) while(low < high && pivot <= L->r[high]) high --; swap (L, low, high); while(low < high && pivot > L->r[low]) low ++; swap (L, low, high); return low; void QSort(SqList *L, int low, int high) if(low < high) int pivot = getPivot(L, low, high); QSort(L, low, pivot-1); QSort(L, pivot+1, high); void QuickSort (SqList *L) QSort(L, 1, L->length-1); int main (int argc, char** argv) SqList *sl = new SqList; int num = 0, temp = 0; cout << "cin the number of sqlist(include flag)" << endl; cin >> num; sl->length = num; for(int i = 0; i < num-1; ++i) cin >> temp; sl->r.push_back(temp); QuickSort(sl); for(int i = 0; i < num; ++i) cout << sl->r[i] << endl; return 0;
以上是关于排序算法的主要内容,如果未能解决你的问题,请参考以下文章