快速排序
来源:互联网 发布:mac os x 10.12 beta2 编辑:程序博客网 时间:2024/06/15 01:02
#include<iostream>using namespace std;int getMid(int data[], int start, int end){int mid = (start + end) / 2;if (data[start] > data[mid]){if (data[mid] > data[end])return mid;else if (data[start] > data[end])return end;elsereturn start;}else{if (data[mid] < data[end])return mid;else if (data[start] < data[end])return end;else return start;}}int partition(int data[], int start, int end){int mid = getMid(data, start, end);int temp = data[mid];data[mid] = data[start];data[start] = temp;mid = start;int i = start + 1;int j = end;while (i < j){if (data[i] < temp) ++i;if (data[j] > temp) --j;if (data[i] >= temp&&data[j] <= temp){data[i] = data[i] + data[j];data[j] = data[i] - data[j];data[i] = data[i] - data[j];++i;--j;}}if (i = j){temp = data[i];data[i] = data[start];data[start] = temp;}if (i > j){--i;temp = data[i];data[i] = data[start];data[start] = temp;}return i;}void quickSort(int a[], int start, int end){if (start == end) return;int par = partition(a, start, end);if (par<start||par>end) return;quickSort(a, start, par - 1);quickSort(a, par + 1, end);}int main(){int length = 0;while (cin >> length){int*a = new int[length];for (int i = 0; i < length; ++i)cin >> a[i];quickSort(a, 0, length - 1);for (int j = 0; j < length; ++j){if (j != length - 1){cout << a[j] << " ";}else{cout << a[j];}}}system("pause");return 0;}
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- Centos6.8安装Redis
- iOS 静态库封装
- mysql中关于数据的编码问题
- 高精度加法
- Machine Learning Yearning(开篇、1、2)
- 快速排序
- Android 三种动画详解
- ArcGIS 注册版本长时间无响应处理案例
- 从0开始学习 GitHub 系列之「03.Git 速成」
- 【ORACLE】Oracle11g,12c 高危漏洞
- JS计算排列组合结果个数(双色球,大乐透计算注数)
- 深入分析Volatile的实现原理
- css自适应等分
- caffe多标签训练