快速排序#笔记

void q_sort(int a[], int l, int r)
{
    
    
	int flag = a[(l + r) / 2];
	int ll = l, rr = r;
	while (ll<rr)
	{
    
    
		while (flag < a[rr] )  rr--;
		while (flag > a[ll] )  ll++;
		if (ll <= rr)swap(a[ll], a[rr]), ll++, rr--;
	}
	if(l<rr)q_sort(a, l, rr);
	if(ll<r)q_sort(a, ll, r);
}
void q_sort(int a[], int l, int r)
{
    
    
	int left = l, right = r;
	int pivot = a[left];
	if (left >= right)
	{
    
    
		return;
	}
	while (left < right)
	{
    
    
		while (left < right && a[right] >= pivot)
		{
    
    
			right--;
		}
		swap(a[right], a[left]);
		while (left < right && a[left] <= pivot)
		{
    
    
			left++;
		}
		swap(a[left], a[right]);
	}
	q_sort(a, l, right - 1);
	q_sort(a, right + 1, r);
}

猜你喜欢

转载自blog.csdn.net/YYDS777/article/details/114106112