社区讨论

不是要快排嘛,为啥还不行啊(难不成还能更快?)

P1177【模板】排序参与者 8已保存回复 13

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
13 条
当前快照
1 份
快照标识符
@mi7ydn7r
此快照首次捕获于
2025/11/21 05:38
4 个月前
此快照最后确认于
2025/11/21 06:42
4 个月前
查看原帖
CPP
#include <stdio.h>
#include <stdlib.h>
void swap(int *a,int *b)
{
	int temp=*a;
	*a=*b;
	*b=temp;
	return;
}
void kp(int arr[] ,int start, int end)
{
    int arrBase, arrMiddle;

    int Start = start,
        End = end;

    if(Start >= End)
        return;

    arrBase = arr[start];
    while(start < end)
    {
        while(start < end && arr[end] > arrBase)
            end--;
        if(start < end)
        {
            swap(&arr[start], &arr[end]);
            start++;
        }

        while(start < end && arr[start] < arrBase)
            start++;
        if(start < end)
        {
            swap(&arr[start], &arr[end]);
            end--;
        }
    }
    arr[start] = arrBase;
    arrMiddle = start;

    kp(arr,Start,arrMiddle-1);
    kp(arr,arrMiddle+1,End);
}

int main()
{
    int a[100002],i;
    int l;
	scanf("%d",&l);
	for(i=0;i<l;i++)
		scanf("%d",&a[i]);
	
    kp(a,0,l-1);
    
	printf("%d",a[0]);
    for(int i = 1; i<l; i++)
        printf(" %d",a[i]);
    printf("\n");
    return 0;
}

回复

13 条回复,欢迎继续交流。

正在加载回复...