全re IDE没问题
查看原帖
全re IDE没问题
1127152
avicii712楼主2023/10/23 22:43
#include<iostream>
using namespace std;
void quickSort(int arr[],int length);
void quickSort(int arr[], int L, int R);
int* partition(int arr[], int L, int R);
void swap(int arr[], int a,int b);
int main()
{
	int N;
	cin >> N;
	int arr[100005];
	for (int i = 0; i < N; i++)
	{
		cin >> arr[i];
	}
	quickSort(arr, N);
	for (int i = 0; i < N; i++)
	{
		cout << arr[i] <<" ";
	}
	//快排
	return 0;
}
	void quickSort(int arr[], int length)
{
	if (arr == NULL || length < 2)
	{
		return;
	}
	quickSort(arr, 0, length - 1);
}
void quickSort(int arr[], int L, int R)
{
	if (L < R)
	{
		int mid =rand()%(R - L + 1) + L;
		swap(arr, mid, R);
		int* p = partition(arr, L, R);//p只有两个元素,第一个是等于区的第一个,第二个是等于区的最后一个
		quickSort(arr, L, p[0] - 1);//使左边有序
		quickSort(arr, p[1] + 1, R);//使右边有序
	}
}
int * partition(int arr[], int L, int R)
{
	int less = L - 1;
	int more = R;
	while (L < more)
	{
		if (arr[L] < arr[R])
		{
			swap(arr, L++, ++less);
		}
		else if (arr[L] > arr[R])
		{
			swap(arr, L, --more);
		}
		else
		{
			L++;
		}
	}
	swap(arr, more, R);
	int result[2] = { less + 1,more };
	return result;
}
void swap(int arr[], int a,int b)
{
	int x = arr[a];
	arr[a] = arr[b];
	arr[b] = x;
}
2023/10/23 22:43
加载中...