【算法导论】用C++实现快速排序

本算法为【算法导论】7.1的C++实现,代码如下:

#include

void swap(int * a,int * b);
int partition(int * array_list,int left,int right);
void quick_sort(int * array_list,int left,int right);
void Print();
const int size = 8;
int array_list [] ={2,8,7,1,3,5,6,4};

int main()
{
	quick_sort(array_list,0,size - 1);

	return 0;
}
void quick_sort(int * array_list,int left,int right)
{
	if(left >= right)
	{
		return ;
	}
	int index = partition(array_list,left,right);
	quick_sort(array_list,left,index - 1);
	quick_sort(array_list,index + 1,right);
}
int partition(int * array_list,int left,int right)
{
	int index = left;
	int pivot = array_list[right];
	for(int i= left ; i< right; i++)
	{
		if(array_list[i] < pivot)
		{
			swap(&array_list[index],&array_list[i]);
			index ++;
		}
	}
	swap(&array_list[right],&array_list[index]);
	Print();
	return index;
}
void swap(int * a,int * b)
{
	int  tmp = *a;
	*a = *b;
	*b = tmp;
}
void Print()
{
	for(int i=0;i< size;i++)
	{
		std::cout<
运行结果为:

2       1       3       4       7       5       6       8
2       1       3       4       7       5       6       8
1       2       3       4       7       5       6       8
1       2       3       4       7       5       6       8
1       2       3       4       5       6       7       8

你可能感兴趣的:(C/C++,重用代码之LinuxC&C++,算法导论)