zoukankan      html  css  js  c++  java
  • 2016年蓝桥杯省赛A组c++第4题(算法填空)

    /*
    排序在各种场合经常被用到。 快速排序是十分常用的高效率的算法。 
    其思想是:先选一个“标尺”, 用它把整个队列过一遍筛子, 
    以保证:其左边的元素都不大于它,其右边的元素都不小于它。 
    这样,排序问题就被分割为两个子区间。 再分别对子区间排序就可以了。 
    下面的代码是一种实现,请分析并填写划线部分缺少的代码。
    */
    
    #include <stdio.h>
    
    void swap(int a[], int i, int j)
    {
        int t = a[i];
        a[i] = a[j];
        a[j] = t;
    }
    
    int partition(int a[], int p, int r)
    {
        int i = p;
        int j = r + 1;
        int x = a[p];
        while(1){
            while(i<r && a[++i]<x);
            while(a[--j]>x);
            if(i>=j) break;
            swap(a,i,j);
        }
        swap(a,p,j);
        //______________________;
        return j;
    }
    
    void quicksort(int a[], int p, int r)
    {
        if(p<r){
            int q = partition(a,p,r);
            quicksort(a,p,q-1);
            quicksort(a,q+1,r);
        }
    }
    
    int main()
    {
        int i;
        int a[] = {5,13,6,24,2,8,19,27,6,12,1,17};
        int N = 12;
    
        quicksort(a, 0, N-1);
    
        for(i=0; i<N; i++) printf("%d ", a[i]);
        printf("
    ");
        return 0;
    }

    tz@COI HZAU

    2018/3/14

  • 相关阅读:
    灾后重建
    购物
    [BZOJ3991][SDOI2015]寻宝游戏
    [BZOJ2286][SDOI2011]消耗战
    [Luogu4149][IOI2011]Race
    [BZOJ4003][JLOI2015]城池攻占
    [HDU5765]Bonds
    [HDU5977]Garden of Eden
    [Luogu4331][Baltic2004]数字序列
    [BZOJ4540][HNOI2016]序列
  • 原文地址:https://www.cnblogs.com/acm-icpcer/p/8568392.html
Copyright © 2011-2022 走看看