赞
踩
- #include <iostream>
- #include<time.h>
- #define LEN 100
- using namespace std;
-
- int partition(int* a, int left, int right)
- {
- double x = a[right];
- int i = left-1, j = right;
- for (;;)
- {
- while(a[++i] < x) { }
- while(a[--j] > x) { if(j==left) break;}
- if(i < j)
- swap(a[i], a[j]);
- else break;
- }
- swap(a[i],a[right]);
- return i;
- }
-
- void quick(int* a, int left, int right)
- {
- stack<int> t;
- if(left<right)
- {
- int p = partition(a, left, right);
-
- if (p-1>left)
- {
- t.push(left);
- t.push(p-1);
- }
- if (p+1<right)
- {
- t.push(p+1);
- t.push(right);
- }
-
- while(!t.empty())
- {
- int r = t.top();
- t.pop();
- int l = t.top();
- t.pop();
-
- p = partition(a, l, r);
-
- if (p-1>l)
- {
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。