OnlyStronger 2023-05-19 15:49 采纳率: 53.8%
浏览 25
已结题

请大家看一下错在哪里了【快速排序实现报错】

麻烦大家看一下,按照书上实现的快速排序,但一直输出的是排序前,这是为什么呢?应该该怎么修改呢?谢谢!

#include<iostream>
using namespace std;


typedef struct
{
    int key1;
    int key2;
}Data;

typedef struct 
{
    Data *r = NULL;
    int length;
}SqList;

int point;


int Partition(SqList &L, int low, int high)
{
    L.r[0] = L.r[low];
    point = L.r[low].key1;
    while (low < high)
    {
        while (low < high && L.r[high].key1 >= point)
        {
            --high;
        }
        L.r[low] = L.r[high];

        while (low < high && L.r[low].key1 <= point)
        {
            ++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)
    {
        point = Partition(L, low, high);
        QSort(L, low, point - 1);
        QSort(L, point + 1, high);
    }
    for (int i = 0; i < 5; i++)
    {
        cout << L.r[i].key1;
    }

}


int main(void)
{
    SqList L;
    L.r = new Data[10];
    for (int i = 0; i < 5; i++)
    {
        cin >> L.r[i].key1;
    }
    QSort(L, 1, L.length);
    delete[] L.r;
        return 0;
}

  • 写回答

1条回答 默认 最新

  • XCU_CH 2023-05-19 15:57
    关注

    在main函数中第61行未对L.length进行初始化,因此会导致程序出现未定义的行为。可以在代码的开头定义L的初始化语句

    SqList L = {new Data[10], 5};
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月3日
  • 已采纳回答 5月26日
  • 创建了问题 5月19日

悬赏问题

  • ¥15 c++的教材订购系统的订购模块显示运行不出来
  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值