30/09/2018, 22:12

Chạy đc mà đến chổ gọi hàm, thì nó không thực hiện ra kết quả..chương trình k báo lỗi gì hết

#include<stdio.h>
#include<conio.h>
int xuly(int A[],int left,int right)
{
    int x=A[left];
    int i=left+1;
    int j=right;
    int t;
    do
    {
        while((i<=j)&(A[i]<=x))
        i++;
        while ((i<=j)&(A[j]>x))
        j--;
        if(i<j)
        {
            t=A[i];
            A[i]=A[j];
            A[j]=t;
            i++;
            j--;
        }

    }while(i<=j);
    t=A[left];
    A[left]=A[j];
    A[j]=t;
    return j;
}
void quicksort(int A[],int left, int right)
{
    int k;
    if (left < right)
    {
        k=xuly(A,left,right);
        quicksort(A,left,k-1);
        quicksort(A,k+1,right);
    }
}
void nhapmang(int A[],int n)
{
    for (int i=0;i<n;i++)
    {
        printf("nhap mang thu 
");
        scanf("%d", &A[i]);
    }
}
void xuatmang(int A[], int n)
{
    for (int i=0;i<n;i++)
    {
        printf("%d 	", A[i]);
    }
}
int main()
{
    int n,A[100],left,right;
    printf("nhap gia tri n 
");
    scanf("%d", &n);
    nhapmang(A,n);
    printf("gia tri day trc khi sap xep 
");
    xuatmang(A,n);
    quicksort(A,left,right);
    printf("gia tri sau khi sap xep 
");
    xuatmang(A,n);
}
Khoa Nguyen viết 00:17 ngày 01/10/2018

Bạn vui lòng đặt lại tiêu đề, giải thích xem code của bạn đang làm gì. Và cho code vào markdown block nhé

Nguyễn Trường Sơn viết 00:19 ngày 01/10/2018

code minh sap xep kieu quick sort, minh moi tham gia day nhau hoc nen k biet chinh

Lưu Thành Vương viết 00:18 ngày 01/10/2018

Dùng công cụ tìm kiếm của diễn đàn search:“markdown” là ra bài hướng dẫn.
Chú ý khi hỏi thì nêu sai ra sao: báo lỗi, hiện console nhưng không chạy, sai kết quả,… và viết tiếng việt có dấu.

Lưu Thành Vương viết 00:20 ngày 01/10/2018

quicksort(A,left,right);

left, right bạn khai báo nhưng chưa cấp giá trị gì cả.
quicksort(A,0,n-1);

Tâm Ninja viết 00:17 ngày 01/10/2018
void quicksort(int A[],int left, int right) // left == right == 0
{
    int k;
    if (left > right) // left > right == false;
    {
        k=xuly(A,left,right);
        quicksort(A,left,k-1);
        quicksort(A,k+1,right);
    } // break luôn khỏi làm gì mất công
}

int main()
{
    int n,A[100],left,right;
    quicksort(A,left,right); // left == right == 0 do compiler tự động tạo giá trị mặc định cho primitive data type 
}

Mình comment inline bạn nhé. Chúc bạn vui…

Lưu Thành Vương viết 00:26 ngày 01/10/2018

Khai báo biến cục bộ thì biến sẽ mang giá trị rác (tùy vào ô nhớ được cấp phát)
Biến toàn cục thì mới được mặc định == 0 chứ nhỉ ?

Mai Hữu viết 00:25 ngày 01/10/2018

đã post lên đây thì đề nghị bác comem vô code lun nha. để ng ta còn hỉu bác đang làm cái gì

Tâm Ninja viết 00:21 ngày 01/10/2018

Java thì còn chắc chứ còn c thì cứ phải build ra mới biết được ấy.

Pham Van Hai viết 00:17 ngày 01/10/2018

int n,A[100],left,right;

Giá trị của leftright đâu?
Truyền vào đây

quicksort(A,left,right);

Thì làm sao nó biết là gì

Sửa lại: khởi tạo giá trị phù hợp cho left, right, ví dụ:
left = 0; right = n;

Nguyễn Trường Sơn viết 00:16 ngày 01/10/2018

minh build no k co lỗi, mà chạy không đc…đến cái gọi hàm thì nó dừng ct rồi ~~

Nguyễn Trường Sơn viết 00:26 ngày 01/10/2018

mình cũng thử lại rồi,mà vẫn không đc~~

Tao Không Ngu. viết 00:18 ngày 01/10/2018

This post was flagged by the community and is temporarily hidden.

Lưu Thành Vương viết 00:22 ngày 01/10/2018

Chỉ cần sửa trong int main() hàm quicksort(A,left,right) => quicksort(A,0,n-1) hoặc sau hàm nhapmang(A,n); gán lại left=0, right=n-1; là chạy ok (tui test thử rồi)

Bài liên quan
0