Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Sắp xếp sinh viên theo mã số bằng quicksort, help plzzzzz

  1. #1
    Ngày gia nhập
    05 2009
    Bài viết
    4

    Mặc định Sắp xếp sinh viên theo mã số bằng quicksort, help plzzzzz

    PHP Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <mem.h>
    #include <conio.h>
    #include <iostream>
    using std::cout;
    using std::cin;

    typedef struct {
        
    char MSSV[5], hoten[30];
        
    int diem;
    SV;
    void swap(SV &aSV &b)
    {
        
    SV c=a;
        
    a=b;
        
    b=c;
    }
    void nhapSV(SV a[], int &n)
    {
        
    int i;
        
    char x[5];
        
    printf("Nhap si so sv: ");
        
    scanf("%d",&n);
        for(
    i=0;i<n;i++)
        {
                 
    printf("\nMa so SV: ");
                
    //int flushall();
                
    cin.getline(x,5,'.');
                
    strcpy(a[i].MSSVx);
                
    printf("\nHoten SV: ");
                
    cin.getline(a[i].hoten,30,'.');
                
    printf("\nDiem  SV: ");
                
    scanf("%d",&a[i].diem);
        }
    }
    void inSV(SV a[], int n)
    {
        
    int i;
        for (
    i=0i<ni++)
            
    printf("\n%6s %30s %4d"a[i].MSSVa[i].hotena[i].diem);
    }
    void sapxep(SV a[], int lint r)
    {
        
    char *x;
        
    int ij;
        
    i=l
        
    j=r
        
    x=a[(l+r)/2].MSSV;
        do
        {
            while((
    a[i].MSSV)<x)i++;
            while((
    a[j].MSSV)>x)j--;
            if(
    i<=j)
            {
                
    swap(a[i],a[j]);
                
    i++;
                
    j--;
            }
        }while(
    i<=j);
        if(
    l<j)sapxep(a);
        if(
    i<r)sapxep(a);
    }
    void sapxep1(SV a[], int n)
    {
        
    sapxep(a0n-);
    }
    main()
    {
        
    SV a[100];
        
    int n=0;
        
    int lr;
        
    nhapSV(an);
        
    printf("\nDanh sach ban dau: ");
        
    inSV(an);
                 
    sapxep1(an);
                 
    printf("\n\nDanh sach sau khi sap xep: ");
        
    inSV(an);
        
    getch();


  2. #2
    Ngày gia nhập
    05 2009
    Nơi ở
    TPHCM
    Bài viết
    12

    ủa cậu có code rùi còn muốn gì nữa

  3. #3
    Ngày gia nhập
    05 2009
    Bài viết
    4

    Trích dẫn Nguyên bản được gửi bởi LCNguyen Xem bài viết
    ủa cậu có code rùi còn muốn gì nữa
    Không, mình viết ham sắp xếp, nhưng nó không chạy.....

  4. #4
    Ngày gia nhập
    04 2009
    Nơi ở
    Hà Nội
    Bài viết
    42

    Trích dẫn Nguyên bản được gửi bởi chang022 Xem bài viết
    PHP Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <mem.h>
    #include <conio.h>
    #include <iostream>
    using std::cout;
    using std::cin;

    typedef struct {
        
    char MSSV[5], hoten[30];
        
    int diem;
    SV;
    void swap(SV &aSV &b)
    {
        
    SV c=a;
        
    a=b;
        
    b=c;
    }
    void nhapSV(SV a[], int &n)
    {
        
    int i;
        
    char x[5];
        
    printf("Nhap si so sv: ");
        
    scanf("%d",&n);
        for(
    i=0;i<n;i++)
        {
                 
    printf("\nMa so SV: ");
                
    //int flushall();
                
    cin.getline(x,5,'.');
                
    strcpy(a[i].MSSVx);
                
    printf("\nHoten SV: ");
                
    cin.getline(a[i].hoten,30,'.');
                
    printf("\nDiem  SV: ");
                
    scanf("%d",&a[i].diem);
        }
    }
    void inSV(SV a[], int n)
    {
        
    int i;
        for (
    i=0i<ni++)
            
    printf("\n%6s %30s %4d"a[i].MSSVa[i].hotena[i].diem);
    }
    void sapxep(SV a[], int lint r)
    {
        
    char *x;
        
    int ij;
        
    i=l
        
    j=r
        
    x=a[(l+r)/2].MSSV;
        do
        {
            while((
    a[i].MSSV)<x)i++;
            while((
    a[j].MSSV)>x)j--;
            if(
    i<=j)
            {
                
    swap(a[i],a[j]);
                
    i++;
                
    j--;
            }
        }while(
    i<=j);
        if(
    l<j)sapxep(a);
        if(
    i<r)sapxep(a);
    }
    void sapxep1(SV a[], int n)
    {
        
    sapxep(a0n-);
    }
    main()
    {
        
    SV a[100];
        
    int n=0;
        
    int lr;
        
    nhapSV(an);
        
    printf("\nDanh sach ban dau: ");
        
    inSV(an);
                 
    sapxep1(an);
                 
    printf("\n\nDanh sach sau khi sap xep: ");
        
    inSV(an);
        
    getch();

    Trong giải thuật sắp xếp kiểu Quick sort. Khi khởi tạo x bạn nên chọn phần từ đầu tiên của mảng. Mình viết tạm cho bạn giả thuật(giả pascal nhé):
    Code:
    Procedure Quick_sort(k, csduoi,cstren)
    k[n+1]>k[i] (i=1->n)  {sử dụng khoá phụ lớn hơn tất cả các khoá đang xét, đặt ở cuối dãy}
    (csduoi=1, cstren=n)  {csduoi, cstren để xây dưng hai biên của mảng khoá đang xét}
    (i=csduoi,j=cstren+1) {các chỉ số i,j dùng để xây dựng các khoá ki, kj cần so sánh để đổi chỗ}
    {Biến lg để đánh dấu bảng khoá có được chia làm 2 phân đoạn hay không(lg=true) nếu không bị chia thành 2 bảng khoá con (lg=false) biến chốt dùng để lưu trữ khoá chốt}
    1.{Khởi tạo} lg:=true;
    2.{Sắp Xếp} 
    If csduoi < cstren then
    begin
    i:=csduoi; j:=cstren+1;
    chot:=k[csduoi];
    while lg do
    begin
    i:=i+1;
    while k[i] < chot do i:=i+1;
    j:=j-1;
    while k[j] > chot do j:=j-1;
    If i<j then k[i] <-> k[j]
    else
    lg:= false;
    end;
    chot<->k[j] {đưa chốt vào vị trí sắp xếp}
    call Quick_Sort(k,csduoi,j-1);  {Sắp xếp bảng dưới chốt}
    call Quick_Sort(k,j+1,cstren);  {Sắp xếp bảng trên chốt}
    Đấy là ý tưởng thoai. Có khi chạy trên nền Pascal cũng ngon đấy. Viết tạm chả pít có sai gì không.
    Avata - Định Công - Giáp Bát mùa lũ

Các đề tài tương tự

  1. làm sao để select sinh viên theo mã sinh viên trong 1 chuỗi mã sinh viên
    Gửi bởi thuan trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 11
    Bài viết cuối: 14-12-2012, 08:37 PM
  2. Bài tập C Hàm struct , tìm kiếm sinh viên theo mã sinh viên
    Gửi bởi doxuanly trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 12-11-2012, 05:15 PM
  3. Sửa lỗi không xuất ra danh sách sinh viên khi dùng QuickSort ?
    Gửi bởi Lindan trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 1
    Bài viết cuối: 16-11-2011, 10:39 PM
  4. Chương trình quản lí sinh viên viết trong visual c++ 2010. Lỗi không chạy khi in danh sách sinh viên theo năm
    Gửi bởi hikaru1015 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 9
    Bài viết cuối: 03-06-2011, 09:31 AM
  5. Chương trình quản lý sinh viên viết bằng C. Làm sao tìm kiếm sinh viên theo tên và sắp xếp?
    Gửi bởi linhdong24 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 24-06-2009, 12:53 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn