读书人

高手来看下帮忙“快速排序”,该如何

发布时间: 2012-04-23 13:17:38 作者: rapoo

高手来看下,帮忙“快速排序”
#include<iostream>
using namespace std;
void Quick_Sort(int A[],int low ,int high)
{
int temp,t=A[low];
int l=low,h=high;
if(l>=h) return ;
while(l<h)
{
while(A[l]<t)l++;
while(A[h]>=t)h--;
if(h>l)
{
temp=A[l];
A[l]=A[h];
A[h]=temp;
}
}
Quick_Sort(A,low,l-1);
Quick_Sort(A,l+1,high);
}
int main()
{
int a[5],i ;
for(i=0;i<5;i++)
cin>>a[i];
Quick_Sort(a,0,4);
for(i=0;i<5;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}

帮帮忙怎么会运行不出来呢!最好帮我改下,把代码给我,
还有,如果有其他的方法也可以发给我,谢谢大哥,大姐了。。。

[解决办法]
while(l<h)
{
while(A[l]<t)l++;
while(A[h]>=t)h--;
if(h>l)
{
temp=A[l];
A[l]=A[h];
A[h]=temp;
}
}


改成while(l<h)
{
while(l<h&&A[h]>=t)
h--;
A[l++]=A[h];
while(l<h&&A[l]<=t)
l++;
A[h--]=A[l];
}
A[l]=t;

[解决办法]
http://zh.wikipedia.org/wiki/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F
[解决办法]
有时间的话 就自己学着调试嘛
[解决办法]

C/C++ code
#include <iostream>  using namespace std;  template<typename T> void Swap(T& a, T& b)  {      T c = a;      a = b;      b = c;  }  template<typename T> void QuickSort(T* arr, int left, int right)  {      int l, r;      T v;      l = left;      r = right;      v = arr[(left + right)/2];            while(l <= r)      {          while (arr[l] < v)              ++l;          while (arr[r] > v)              --r;          if(l <= r)          {              Swap<T>(arr[l], arr[r]);              ++l;              --r;          }      }            if(l == r)          l++;      if(left < r)          QuickSort<T>(arr, left, r);      if(l < right)          QuickSort<T>(arr, l, right);  }  int main()    {           int i;        int a[]={1,4,2,66,22,23,5,6,8,7,99,54};        QuickSort<int>(a, 0, 11);        for(i=0;i<12;i++)            cout<<a[i]<<endl;            double b[]={5.1,4.5,2.2,66.5,22.6,23,5,6,18.1,7,99,54};        QuickSort<double>(b, 0, 11);        for(i=0;i<12;i++)            cout<<b[i]<<endl;            return 0;    }
[解决办法]
楼上写的递归貌似没有出现return,是我眼花了吗?
[解决办法]
探讨
楼上写的递归貌似没有出现return,是我眼花了吗?

读书人网 >C++

热点推荐