快排40分求助555
查看原帖
快排40分求助555
1313977
BUYA楼主2024/9/14 10:50
#include <stdio.h>
int Partition(int arr[], int low, int high)
{
	int pivot = arr[low];//pivot 支点;中心
	while (low < high)
	{
		while (low < high && arr[high] >= pivot)
		{
			high--;
		}
		arr[low] = arr[high];
		while (low < high && arr[low] <= pivot)
		{
			low++;
		}
		arr[high] = arr[low];
	}
	arr[low] = pivot;
	return low;
}

void Quicksort(int arr[], int low, int high)
{
	if (low < high)
	{
		int pivotpos = Partition(arr, low, high);
		Quicksort(arr, low, pivotpos - 1);
		Quicksort(arr, pivotpos + 1, high);
	}
}

int main()
{
	int arr[100001];
	int n;
	int low = 0;
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &arr[i]);
	}
	Quicksort(arr, low, n-1);
	for (int i = 0; i < n; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}
2024/9/14 10:50
加载中...