7-1数据结构实验五快速排序-创新互联

用顺序表作存储结构,输入一组数据,用快速排序法对其进行排序。

从事西信服务器托管,服务器租用,云主机,虚拟空间,域名注册,CDN,网络代维等服务。

顺序表的类型描述:

#define MAXSIZE 50     // MAXSIZE为大数据元素数目
typedef int ElemType;
typedef  struct
{  ElemType  r[MAXSIZE +1];    // r[0]闲置或另作它用
   int  length;
}SqList;
输入格式:

第一行输入一个整数n,表示顺序表的元素个数。

第二行行输入原始序列的n 个整数。

输出格式:

在一行中输出从小到大排序后的结果,数字间以1个空格分隔,行末不得有多余空格。

输入样例:
8
19 -18 13 26 275 26 7 35
输出样例:
-18 7 13 19 26 26 35 275

代码如下:

#include#define MAXSIZE 50     // MAXSIZE为大数据元素数目
typedef int ElemType;
typedef struct {
    ElemType r[MAXSIZE + 1];    // r[0]闲置或另作它用
    int length;
} SqList;

void Quick(int *p, int left, int right);

int main() {
    SqList sq;
    int n;
    scanf("%d", &n);
    for (int i = 0; i< n; i++) {
        scanf("%d", &sq.r[i]);
    }
    int left = 0;
    int right = n - 1;
    Quick(sq.r, left, right);
    for (int i = 0; i< n; i++) {
        if (i == 0){
            printf("%d",sq.r[i]);
        } else {
            printf(" %d",sq.r[i]);
        }
    }
    return 0;
}

void Quick(int *p, int left, int right) {
    if (left >= right) {
        return;
    }
    int point = p[left];
    int head = left, tail = right;
    while (head< tail) {
        while (p[tail] >= point) {
            tail--;
        }
        if(head< tail){
            p[head] = p[tail];
            head++;
        }
        while (head< tail && p[head]< point) {
            head++;
        }
        if (head< tail) {
            p[tail] = p[head];
            tail--;
        }
    }
    p[head] = point;
    Quick(p, left, head - 1);
    Quick(p, head + 1, right);
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享标题:7-1数据结构实验五快速排序-创新互联
标题路径:http://azwzsj.com/article/dpspds.html