| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 919 人关注过本帖
标题:有大神能帮我看看我的快速排序,哪里出问题了么 能编译不能运行
只看楼主 加入收藏
cm_131150630
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-4-6
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
有大神能帮我看看我的快速排序,哪里出问题了么 能编译不能运行
#include<stdio.h>
#include<stdlib.h>
#define STACK_SIZE 100
typedef int ElemType;
typedef struct{
    ElemType *r;
    int low;
    int high;
}SqList;
typedef SqList* LNode;
bool InitSqList(SqList &L){
    L.r=(ElemType*)malloc(STACK_SIZE*sizeof(ElemType));
        if(!L.r) return false;
    L.low=L.high=1;
    return true;
}
bool GetSqList(SqList &L,int a){
    int i;
    for(i=1;i<a+1;i++)
        scanf("%d",L.r[i]);
    L.high=a;
    if (L.low==L.high) return false;
    return true;
}
void Swap(int *a,int *b){
    int i,e;
    e=*a;
    *a=*b;
    *b=e;
}
int Partition(SqList &L,int low,int high)
{

    int pivot=low;
    ElemType pivotvalue=L.r[low];
    while(low<high)
    {
        while(low<high&&L.r[high]>=pivotvalue)
            high--;
        while(low<high&&L.r[low]<=pivotvalue)
            low++;
        Swap(&L.r[low],&L.r[high]);
    }
    Swap(&L.r[pivot],&L.r[low]);
    return low;
}
void QSort(SqList &L,int low,int high)
{
    int pivotloc;
    if(low<high){
        pivotloc=Partition(L,low,high);
        QSort(L,low,pivotloc-1);
        QSort(L,pivotloc+1,high);
    }
}
void print(SqList &L,int a){
    int i;
    for(i=0;i<a;i++)
        printf("%d",L.r[i]);
}
int main(){
    SqList L;int a;
    InitSqList(L);
    printf("&Ccedil;&euml;&Ecirc;&auml;&Egrave;&euml;");
    scanf("%d",&a);
    printf("&Ccedil;&euml;&Ecirc;&auml;&Egrave;&euml;");
    GetSqList(L,a);
    print(L,a);
    Partition(L,L.low,L.high);
    QSort(L,L.low,L.high);
    print(L,a);
    return 0;
}

搜索更多相关主题的帖子: include return false 
2017-04-06 23:43
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:20 
排序主体没啥问题~就是改了一点细节~
先试试效果如何~

程序代码:
#include<stdio.h>
#include<stdlib.h>

#define STACK_SIZE 100
typedef int ElemType;

typedef struct
{
    ElemType *r;
    int low;
    int high;

}SqList;
typedef SqList* LNode;

bool InitSqList(SqList &L)
{
    L.r=(ElemType*)malloc(STACK_SIZE*sizeof(ElemType));

   if(!L.r)
       return false;

    L.low=L.high=1;

    return true;
}
bool GetSqList(SqList &L,int a)
{
    int i;
    for(i=1;i<a+1;i++)
        scanf("%d",&L.r[i]);

    L.high=a;

    if (L.low==L.high) 
        return false;

    return true;
}
void Swap(int *a,int *b)   //交换函数
{
    int e;

    e=*a;
    *a=*b;
    *b=e;
}
int Partition(SqList &L,int low,int high)
{

    int pivot=low;

    ElemType pivotvalue=L.r[low];

    while(low<high)
    {
        while(low<high&&L.r[high]>=pivotvalue)
            high--;

        while(low<high&&L.r[low]<=pivotvalue)
            low++;

        Swap(&L.r[low],&L.r[high]);
    }

    Swap(&L.r[pivot],&L.r[low]);

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

    for(i=1;i<a+1;i++)
        printf("%-4d",L.r[i]);

    puts("");
}
int main()
{
    SqList L;
    int a;
    InitSqList(L);

    printf("&Ccedil;&euml;&Ecirc;&auml;&Egrave;&euml;");
    scanf("%d",&a);

    printf("&Ccedil;&euml;&Ecirc;&auml;&Egrave;&euml;");
    GetSqList(L,a);
    print(L,a);

    Partition(L,L.low,L.high);
    QSort(L,L.low,L.high);

    print(L,a);

    return 0;
}

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-04-07 02:04
cm_131150630
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-4-6
收藏
得分:0 
回复 2楼 九转星河
谢谢 谢谢。
2017-04-07 12:39
cm_131150630
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-4-6
收藏
得分:0 
回复 2楼 九转星河
谢谢 谢谢。
2017-04-07 12:39
快速回复:有大神能帮我看看我的快速排序,哪里出问题了么 能编译不能运行
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016180 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved