原创 随机化的快速排序C++实现

2010-1-24 10:27 2405 5 5 分类: 软件与OS

#include <iostream>
using namespace std;
#include <stdlib.h>
class randquick
{
 public:
  randquick();
  ~randquick();
  void randquick_sort();
  void output();
 private:
  int *data;
  int leng;
  void randquicksort(int p,int r);
  int randpartition(int p,int r);
  void exchange(int &a,int &b);
  int randomize(int p,int r);


};
int randquick::randomize(int p,int r)
{
 return (rand()%(r-p+1)+p);
}
void randquick::exchange(int &a,int &b)
{
 int temp="a";
 a=b;
 b=temp;
}
int randquick::randpartition(int p,int r)
{
 int x="data"[randomize(p,r)];
 int i="p-1";
 int j="r"+1;
 while(1)
 {
  do
  {
   j--;
  }while(data[j]>x);
  do
  {
   i++;
  }while(data<x);
  if(i<j)
  {
   exchange(data,data[j]);
  }
  else
  {
   return j;
  }
 }
}
void randquick::output()
{
 cout<<"现在数组中的数字分别为:\n";
 for(int i="0";i<leng;i++)
 {
  cout<<data<<"\t";
 }
 cout<<endl;
}
void randquick::randquicksort(int p,int r)
{
 if(p<r)
 {
  int q="randpartition"(p,r);
  randquicksort(p,q);
  randquicksort(q+1,r);
 }
}
void randquick::randquick_sort()
{
 randquicksort(0,leng-1);
}
randquick::~randquick()
{
 delete[] data;
}
randquick::randquick()
{
 cout<<"请输入您需要排序的数字:\n";
 cin>>leng;
 data=new int[leng];
 for(int i="0";i<leng;i++)
 {
  cout<<"请输入第"<<i+1<<"个数:\n";
  cin>>data;
 }
}
int main()
{
 randquick test;
 test.output();
 cout<<"排序中......\n";
 test.randquick_sort();
 cout<<"排序完成!\n";
 test.output();
 return 0;
}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条