快速排序

算法的大致流程:

1.创建两个变量i,j,i 指向第一个元素,j指向最后一个元素。整个过程中要保证i

2.把数组里的第一元素作为基准数。k = data[0]

3.从j开始从右往左找,不断的递减j,把所有比k小的数移到k的左边。

4.从i+1元素向右找,递加i,将大于k的数移到k的右边。

5.直到 i=j,第一遍结束。

6.再将两边的分组重复这个过程,直到不能再分。

代码实现:

#include "stdafx.h"
#include
#include

void swap(int &a, int &b)
{
	int k;
	k = a;
	a = b;
	b = k;
}

void quick_sort(int* data,int start,int end)
{
	if (start >= end)return;
	int i = start+1;
	int j = end;
	int k = data[start];
	while (i < j)
	{
		while (k < data[j]&&i < j)
			j--;
		while (k >data[i]&&i < j)
			i++;
		swap(data[i], data[j]);
	}
	if (data[start] > data[i])
		swap(data[start], data[i]);
	

	if(start 

结果展示:

快速排序_第1张图片

你可能感兴趣的:(快速排序)