1. THÔNG BÁO TUYỂN ADMIN DIỄN ĐÀN 2013
    Tìm kiếm nhà trọ - Ở ghép
    THÔNG BÁO BÁN ÁO SPKT.NET CHO THÀNH VIÊN DIỄN ĐÀN


    HÃY TÌM KIẾM Ở ĐÂY TRƯỚC KHI ĐẶT CÂU HỎI
    {xen:phrase loading}

Sắp xếp mảng 2 chiều tăng dần. Dùng mảng phụ.

Thảo luận trong 'C/C++' bắt đầu bởi nglehien, 11 Tháng một 2010.

  1. nglehien Member

    Số bài viết: 52
    Đã được thích: 0
    Điểm thành tích: 6
    Sắp xếp mảng 2 chiều. 2 cách

    Cách 1: Dùng mảng phụ.
    Mã:
    #include "stdafx.h"
    #define N 3
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        int i,j,k,temp;
        int a[N][N],b[N*N];
    //Nhap mang 2 chieu;
        for (i = 0; i < N; i++)
            for (j = 0; j <N; j++){
                printf("Nhap vao phan tu A[%d][%d]: ", i, j);scanf_s("%d", &a[i][j]);_flushall();
            }
            printf("\n");
    // Gan vao mang 1 chieu.
        k=0;
        for(i=0;i<N;i++)
            for(j=0;j<N;j++){
                b[k]=a[i][j];
                k++;
            }
    //sap xep mang moi tao;
        for(i=0;i<N*N-1;i++)
            for(j=i+1;j<N*N;j++)
                if(b[i]>b[j]){
                    temp=b[i];
                    b[i]=b[j];
                    b[j]=temp;
                }
            
    // Gan vao mang 2 chieu.
        k=0;
        for(i=0;i<N;i++)
            for(j=0;j<N;j++){
                a[i][j]=b[k];
                k++;
            }
    
    //Xuat ra mang 2 chieu da duoc xap xep
        for (i = 0; i < N; i++){
            for (j = 0; j < N; j++)
                printf("%4d ", a[i][j]);
                printf("\n"); 
            }
        return 0;
    }
  2. nglehien Member

    Số bài viết: 52
    Đã được thích: 0
    Điểm thành tích: 6
    Re: Sắp xếp mảng 2 chiều. 2 cách

    Cách 2: sắp xếp trực tiếp
    Mã:
    #include "stdafx.h"
    #define N 3
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        int i,j,temp;
        int a[N][N];
    //Nhap mang 2 chieu;
        for (i = 0; i < N; i++)
            for (j = 0; j <N; j++){
                printf("Nhap vao phan tu A[%d][%d]: ", i, j);scanf_s("%d", &a[i][j]);_flushall();
            }
            printf("\n");
    
    //Sap xep mang 2 chieu
       for(i=0;i<N*N-1;i++)
          for(j=i+1;j<N*N;j++)
             if(a[i/N][i%N]>a[j/N][j%N]){
                temp=a[i/N][i%N];
                a[i/N][i%N]=a[j/N][j%N];
                a[j/N][j%N]=temp;
             }
    
    //Xuat ra mang 2 chieu da duoc xap xep
        for (i = 0; i < N; i++){
            for (j = 0; j < N; j++)
                printf("%4d ", a[i][j]);
                printf("\n"); 
            }
        return 0;
    }
  3. phuquy New Member

    Số bài viết: 2
    Đã được thích: 0
    Điểm thành tích: 0
    Re: Sắp xếp mảng 2 chiều. 2 cách

    Mảng hai chiều. Cách 2 hay thật. thanks nglehien nhìu nhìu. mặc dù không biết nhiều về "chú" này. HỌc thuộc thuật toán nì để thi mới dc!!!:012::012::012::012::012::012::012:
  4. spkt_099100 Member

    Số bài viết: 949
    Đã được thích: 0
    Điểm thành tích: 16
    Re: Sắp xếp mảng 2 chiều. 2 cách


    mình khai báo mảng random đc ko vậy? khai báo trực tiếp thấy dài quá!!học ko thuộc đc đâu!!

Chia sẻ trang này