爱雨天 2021-11-19 08:59 采纳率: 87.5%
浏览 34
已结题

写了一个快速排序算法,但是不知道为啥按原序输出的

问题遇到的现象和发生背景

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXSIZE 20
#include<iostream>
typedef int element;  // 自定义int类型element
#define list_size 10000

using namespace std;

typedef struct
{
    int key;
}Redtype;

typedef struct SqList
{
    element* elem;
    Redtype r[MAXSIZE + 1];
    int length;
};

int creatnewlist(SqList& L, int n);// 建立顺序表
int initit(SqList& L);

int initit(SqList& L)  //建表初始化
{
    L.elem = (int*)malloc(sizeof(int));
    if (!L.elem) return -1;
    L.length = 0;
    return 0;
}

int creatnewlist(SqList& L, int n)  // 建立顺序表
{
    int i;
    L.elem = (int*)malloc(sizeof(int) * list_size);
    if (!L.elem) return -1;
    else
    {
        for (i = 0; i < n; i++)
        {
            scanf_s("%d", &L.elem[i]);
            L.length++;
        }
    }
    return 0;
}

int Partition(SqList& L, int low, int high)
{
    L.r[0] = L.r[low];
    int pivotket = L.r[low].key;
    while (low < high)
    {
        while (low < high && L.r[high].key >= pivotket)--high;
        L.r[low] = L.r[high];
        while (low < high && L.r[low].key <= pivotket)++low;
        L.r[high] = L.r[low];
    }
    L.r[low] = L.r[0];
    return low;

}

void QSort(SqList& L, int low, int high)
{
    if (low < high)
    {
        int pivotloc = Partition(L, low, high);
        QSort(L, low, pivotloc - 1);
        QSort(L,pivotloc + 1,high);
    }

}

void QuicnSort(SqList& L)
{
    QSort(L, 1, L.length);
}




//void ShellSore(SqList& L, int dlat[], int t)
//{
//    for (int k = 0; k < t; k++)
//        printf("%d", dlat[t]);
//}


void show(SqList &L)  //输出顺序表
{
    int i;
    for(i = 0;i<L.length;i++)
    {
        if(i==L.length-1) printf("%d\n", L.elem[i]);
        else printf("%d ", L.elem[i]);
    }
}


int main()
{
    int n;
    int dlat[10];
    printf("请输入要排的数:");
    //int len;
    //scanf_s("%d", &len);
    
    
    
    SqList L;

    initit(L);

    creatnewlist(L, 10);

    Partition(L, 0, 8);
    QSort(L, 0, 8);
    QuicnSort(L);


    show( L);
}



img

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • 梦爻 2021-11-19 09:30
    关注

    你存数据用的elem,排序用key干嘛?操作半天是对key操作,elem动都没动,输出肯定是没变的啊

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月9日
  • 已采纳回答 12月1日
  • 创建了问题 11月19日

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?