爱雨天 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 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c