69,336
社区成员
发帖
与我相关
我的任务
分享
#include "iostream"
using namespace std;
typedef struct node
{
int start;
int end;
}*Node;
void QuickSort(int a[],int l,int h)
{
int temp,low,high,top=-1;
Node stack[20];
node *p=(Node)malloc(sizeof(node));
p->start=l;
p->end=h;
stack[++top]=p;
while(top>=0)
{
low=stack[top]->start;
high=stack[top]->end;
top--;
temp=a[low];
if(low<high)
{
while(low<high)
{
while(low<high&&a[high]>=temp)
high--;
a[low]=a[high];
while(low<high&&a[low]<=temp)
low++;
a[high]=a[low];
}
a[low]=temp;
p->start=l;p->end=high-1;stack[++top]=p;
p->start=low+1;p->end=h;stack[++top]=p;
}
}
}
int main(int argc, char* argv[])
{
int a[]={5,6,8,4,1,7,2,3,9,11,10};
QuickSort(a,0,10);
for(int i=0;i<11;i++)
cout<<a[i]<<' ';
return 0;
}
void qsort(int a[],int l,int r)
{
while(l < r)
{
int q=a[l],temp;
int i=l,j=r;
while (i < j)
{
while(j>i && a[j]>q) --j;
if(j > i) a[i++] = a[j];
while(j>i && a[i]<q) ++i;
if (j > i) a[j--] = a[i];
}
a[i] = q;
qsort(a, l, i-1);
l = i + 1;
}
}
int main()
{
int a[] = {3,4,8,7,6,5,9};
int i;
qsort(a, 0, 6);
for (i=0; i<7; i++)
printf("%d ",a[i]);
getch();
return 0;
}
int split(int data[], int low, int high)
{
int i = low;
int k;
int x = data[low];
for (k=low+1; k<=high; k++)
{
if (x<=data[k])
{
i = i + 1;
if (i!=k)
swap(data[i], data[k]);
}
}
swap(data[low], data[i]);
return i;
}
void quick_sort(int data, int low, int high)
{
int k;
if (low < high)
{
k = split(data, low, high);
quick_sort(data, low, k-1);
quick_sort(data, k+1, high);
}
}