注册 登录
编程论坛 C语言论坛

这是个快速排序代码 编译后什么都没有输出 那个环节出了问题了求大佬们指教 感谢

风流泰 发布于 2019-03-18 18:11, 1347 次点击
#include<stdio.h>
int a[]={11,13,3,4,6,7,1,9,2};
void quicksort(int left,int right)
{
    int t;
    int i,j;
    if(left>right)
        return;
   
    i=left;
    j=right;
    while(i!=j)
        while(a[j]>=a[left] && i<j)
            j--;
        while(a[i]<=a[left] && i<j)
            i++;
        
        if(i<j)
            t=a[i];
            a[i]=a[j];
            a[j]=t;
   
    t=a[left];
    a[left]=a[i];
    a[i]=t;
   
    quicksort(left,i-1);
    quicksort(i+1,right);
    return;
}

int main(void)
{
    int i;
    //int a[]={11,13,3,4,6,7,1,9,2};
    quicksort(0,8);
    for(i=0;i<=9;i++)
        printf("%d",a[i]);
    return 0;
}
 
4 回复
#2
word1232019-03-18 21:57
for(i=0;i<=9;i++)   只有9个数,怎么输出10个数呢?
#3
word1232019-03-18 22:14
#include<stdio.h>
int a[]={11,13,3,4,6,7,1,9,2};
void quicksort(int left,int right)
{
    int t;
    int i,j;
    if(left>=right)   //
        return;
   
    i=left;
    j=right;
    t = a[left];   //
    while(i<j){
        while(a[j]>=t && i<j)
            j--;
        if(i<j){    //
            a[i] = a[j];
            i++;
        }
        while(a[i]<=t && i<j)
            i++;
        if(i<j){  //
            a[j] = a[i];
            j--;
        }
    }
    a[i]=t; //
   
    quicksort(left,i-1);
    quicksort(i+1,right);
    return;
}

int main(void)
{
    int i;
    quicksort(0,8);
    for(i=0;i<9;i++)
        printf("%d, ",a[i]);
    return 0;
}
#4
风流泰2019-03-19 15:17
回复 3楼 word123
谢谢指导
#5
waterstar2019-03-19 15:22
缺少很多大括号,一定要养成while,if等等条件语句之后跟着一组大括号的习惯
程序代码:

#include<stdio.h>
int a[]={11,13,3,4,6,7,1,9,2};
void quicksort(int left,int right)
{
    int t;
    int i,j;
    if(left>right)
        return;
   
    i=left;
    j=right;
    while(i!=j) {
        while(a[j]>=a[left] && i<j)
            j--;
        while(a[i]<=a[left] && i<j)
            i++;
        
        if(i<j) {
            t=a[i];
            a[i]=a[j];
            a[j]=t;
        }
    }
    t=a[left];
    a[left]=a[i];
    a[i]=t;
   
    quicksort(left,i-1);
    quicksort(i+1,right);
    return;
}

int main(void)
{
    int i;
    //int a[]={11,13,3,4,6,7,1,9,2};
    quicksort(0,8);
    for(i=0;i< 9;i++)
        printf("%d ",a[i]);
    return 0;
}
1