排序算法中的快速排列中的partition函数
2016-05-30 15:57
435 查看
#include<iostream> #include<fstream> using namespace std; /* 算法思想:根据一个基准数,每一次执行过后都会所有的比基准数大的都会在他的右边 比他小的都会在基准数的左边 */ int partition(int arr[], int left, int right); void QuitSort(int arr[], int left, int right); int main(int argc, char argv[]) { ifstream cin("test.txt"); int number; int arr[10]; int point = 0; while (!cin.eof()) { cin >> number; arr[point++] = number; } cin.close(); QuitSort(arr, 0, 9); ofstream cout("test.txt",ios::app); cout << endl; for (int i = 0; i < point; i++) { cout << arr[i] << " "; } cout.close(); return 0; } void QuitSort(int arr[], int left, int right) { if (left < right) { //partition函数的机制是,是的数组根据基准数分成两部分 int mid = partition(arr, left, right); //递归调用的方法,对基准数两边的数分别进行排序 QuitSort(arr, left, mid - 1); QuitSort(arr, mid + 1, right); } } int partition(int arr[], int left, int right) { //把数组的left位置的数字当做是基准数 //从两边进行比较,先右后左 int pivot = arr[left]; while (left < right) { while (left<right&&arr[right]>pivot) right--; arr[left] = arr[right]; while (left < right&&arr[left] < pivot) left++; arr[right] = arr[left]; } arr[left] = pivot; return left; }
相关文章推荐
- 63条PHP编程技巧
- linux find命令的用法
- android 基础知识总结
- zookeeper-系列2,简单实用
- Dynamics CRM 本地插件注册器连CRMAn unsecured or incorrectly secured fault was received from the other party
- Dynamics CRM 本地插件注册器连CRMAn unsecured or incorrectly secured fault was received from the other party
- Dynamics CRM 本地插件注册器连CRMAn unsecured or incorrectly secured fault was received from the other party
- 图文详解YUV420数据格式
- swig-python
- 我所知道的web攻击方式
- 游戏服务端技术点拾遗
- spark相比hadoop的 优势如下
- 【Java基础】continue用法知识总结
- Codevs_1403_新三国争霸_(Kruskal+动态规划)
- hibernate(四)
- 面试题:return和finally执行
- Android logcat
- Java设计模式之工厂模式(Factory)
- MongoDB系列(二):C#应用
- Objective-C的动态特性