#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
using namespace std;
int RandomInRange(int start,int end)
{
srand((unsigned)time(NULL));
return (rand() % (end-start+1)) +start;
}
void Swap(int *a ,int *b)
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
int partition(int data[],int length,int start,int end)
{
if(data == NULL || length <= 0 || start < 0 || end >= length)
printf("error\n");
int index = RandomInRange(start,end);
Swap(&data[index],&data[end]);
int small = start - 1;
for(index = start;index < end;++index)
{
if(data[index] < data[end])
{
++small;
if(small != index)
Swap(&data[index],&data[small]);
}
}
++small;
Swap(&data[small],&data[end]);
return small;
}
void QuickSort(int data[],int length,int start,int end)
{
if(start == end)
return;
int index = partition(data,length,start,end);
if(index > start)
QuickSort(data,length,start,index-1);
if(index < end)
QuickSort(data,length,index+1,end);
}
void test()
{
int data[8] = {111,34,42,332,4,13,45,55};
for(int i=0;i<8;i++)
printf("%d ",data[i]);
printf("\nafter sort:\n");
QuickSort(data,8,0,7);
for(int i=0;i<8;i++)
printf("%d ",data[i]);
printf("\n");
}
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
using namespace std;
int RandomInRange(int start,int end)
{
srand((unsigned)time(NULL));
return (rand() % (end-start+1)) +start;
}
void Swap(int *a ,int *b)
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
int partition(int data[],int length,int start,int end)
{
if(data == NULL || length <= 0 || start < 0 || end >= length)
printf("error\n");
int index = RandomInRange(start,end);
Swap(&data[index],&data[end]);
int small = start - 1;
for(index = start;index < end;++index)
{
if(data[index] < data[end])
{
++small;
if(small != index)
Swap(&data[index],&data[small]);
}
}
++small;
Swap(&data[small],&data[end]);
return small;
}
void QuickSort(int data[],int length,int start,int end)
{
if(start == end)
return;
int index = partition(data,length,start,end);
if(index > start)
QuickSort(data,length,start,index-1);
if(index < end)
QuickSort(data,length,index+1,end);
}
void test()
{
int data[8] = {111,34,42,332,4,13,45,55};
for(int i=0;i<8;i++)
printf("%d ",data[i]);
printf("\nafter sort:\n");
QuickSort(data,8,0,7);
for(int i=0;i<8;i++)
printf("%d ",data[i]);
printf("\n");
}