高手来看下,帮忙“快速排序”
#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
[解决办法]
有时间的话 就自己学着调试嘛
[解决办法]
#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,是我眼花了吗?
[解决办法]