快速排序、冒泡排序、选择排序 C++实现

来源:互联网 发布:rna seq数据分析流程 编辑:程序博客网 时间:2024/06/01 08:08
#include #include using namespace std;//QuickSort//from low to high//一趟QuickSortint Partition(vector &L, int low, int high){int pivotkey = L[low];while (low < high)//以前后指针相遇作为一次QuickSort结束的标志{while (low < high && pivotkey <= L[high])//由后到前搜索--high;L[low] = L[high];while (low < high && pivotkey >= L[low])//由前到后搜索++low;L[high] = L[low];}L[low] = pivotkey;return low;}//递归式实现void QSort(vector &L, int low, int high){if (low < high){int pivotloc = Partition(L, low, high);QSort(L, low, pivotloc - 1);QSort(L, pivotloc + 1, high);}}void QuickSort(vector &L){QSort(L, 0, L.size()-1);//数据从L[0]开始,L[L.size()-1]结束}//BubbleSort//from low to highvoid BubbleSort(vector &L){for (int i = 0; i < L.size(); ++i){for (size_t j = 0; j < L.size()-1-i; ++j){if (L[j] > L[j+1]){int tem = L[j];L[j] = L[j+1];L[j+1] = tem;}}}}//SelectSort//from low to highvoid SelectSort(vector &L){for (size_t i = 0; i < L.size(); i++){int min = i;for (size_t j = i+1; j < L.size(); j++){if (L[min] >L[j]){min = j;}}int tem = L[i];L[i] = L[min];L[min] = tem;}}int main(){vector L{49,38,65,97,76,13,27,49};SelectSort(L);for (auto &i : L)cout << i << " ";cout << endl;system("pause");}

阅读全文
0 0
原创粉丝点击