cotonier


私信TA

用户名:18955969340

访问量:572

签 名:

等  级
排  名 6188
经  验 1393
参赛次数 0
文章发表 4
年  龄 0
在职情况 学生
学  校 天津大学
专  业 测控

  自我简介:

解题思路:采用快速排序法,采用最左边的数为基准数,将小于等于基准点的数全部放到基准点右边,将大于等于基准点的数全部放到基准点左边,实现从大到小的排序

注意事项:相比冒泡排序,每次交换是跳跃式的,最差情况下与冒泡排序时间复杂度一致,此题下时间复杂度与冒泡排序一致

参考代码:

#include<stdio.h>
void quickSort(int *a,int left,int right)
{
    if(left>=right) return;
    int standard=a[left],temp;
    int i=left,j=right;
    while(i!=j)
    {
        while(a[j]<=standard && i<j) --j;
        while(a[i]>=standard && i<j) ++i;
        if(i<j)   
        {
            temp=a[i];
            a[i]=a[j];
            a[j]=temp;
        }
    }
    a[left]=a[i];
    a[i]=standard;
    quickSort(a,left,i-1);
    quickSort(a,i+1,right);
}

int main()
{
    int n=10;
    int *a=(int *)malloc(n*sizeof(int));
    for(int i=0;i<n;i++) scanf("%d",a+i);
    quickSort(a,0,9);
    for(int i=0;i<n-1;i++) printf("%d ",a[i]);
    printf("%d\n",a[n-1]);
    
    
	return 0;
}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区