65,210
社区成员
发帖
与我相关
我的任务
分享
if (lowPtr>=highPtr)
break;//这里跳出了while循环,所以要在while循环外加return;
#include <iostream>
#include <string>
using namespace std;
class QuickSort
{
private:
long *theArray;//
int elementNumber;
// int max;
public:
int partition();
QuickSort(int max)
{
theArray=new long[max] ;
elementNumber=0;
}
void insert(int value)
{
theArray[elementNumber]=value;
elementNumber++;
}
void display()
{
for (int j=0;j <elementNumber;j++)
cout <<theArray[j] <<endl;
cout <<"";
}
void quickSort()
{
recQuickSort(0,elementNumber-1);
}
void recQuickSort(int low,int high)
{
if (high-low <=0)
return;
else
{
long pivot=theArray[high];
int partition1;
partition1=partition(low,high,pivot);
recQuickSort(low,partition1-1); ///
recQuickSort(partition1+1,high);
}
}
int partition(int low,int high,long pivot)
{
int lowPtr=low;
int highPtr=high-1;
while (true)
{
while (theArray[lowPtr] <pivot)
lowPtr++;
while (highPtr>0&&theArray[highPtr]>pivot)
highPtr--;
if (lowPtr>=highPtr)
break;
else
swap(lowPtr,highPtr);
swap(lowPtr,high);
return lowPtr; //这个逻辑对吗?
}
}
void swap(int data1,int data2)
{
long temp=theArray[data1];
theArray[data1]=theArray[data2];
theArray[data2]=temp;
}
};
int main()
{
// QuickSort array1;
int n;
cout <<"也请输入元素个数:" <<endl;
cin>>n;
cout <<endl;
QuickSort array1(n);///
cout <<"请输入" <<n <<"个元素" <<endl;
for (int i=0;i <n;i++)
{
cin>>i;
cout <<endl;
array1.insert(i);
}
array1.display();
array1.quickSort();
array1.display();
}
#include "stdafx.h"
#include <iostream>
#include <string.h>
using namespace std;
class QuickSort{
private:
long *theArray;
int elementNumber;
// int max;
public:
QuickSort(int max){
theArray=new long[max] ;
elementNumber=0;
}
void insert(int value){
theArray[elementNumber]=value;
elementNumber++;
}
void display(){
for(int j=0;j <elementNumber;j++)
cout <<theArray[j] <<endl;
cout <<"";
}
void quickSort(){
recQuickSort(0,elementNumber-1);
}
void recQuickSort(int low,int high){
if(high-low <=0)
return;
else{
long pivot=theArray[high];
int partition1;
partition1=partition(low,high,pivot);
recQuickSort(low,partition1-1);
recQuickSort(partition1+1,high);
}
}
int partition(int low,int high,long pivot)
{
int lowPtr=low;
int highPtr=high-1;
while(true){
while(theArray[lowPtr] <pivot)
lowPtr++;
while(highPtr>0&&theArray[highPtr]>pivot)
highPtr--;
if(lowPtr>=highPtr)
break;
else
swap(lowPtr,highPtr);
swap(lowPtr,high);
return lowPtr;
}
}
void swap(int data1,int data2){
long temp=theArray[data1];
theArray[data1]=theArray[data2];
theArray[data2]=temp;
}
};
void main()
{
QuickSort *array1;
int n;
cout <<"也请输入元素个数:" <<endl;
cin>>n;
cout <<endl;
array1=new QuickSort(n);
cout <<"请输入" <<n <<"个元素" <<endl;
for(int i=0;i <n;i++)
{
cin>>i;
cout <<endl;
array1->insert(i);
}
array1->display();
array1->quickSort();
array1->display();
}