Trang Chủ   Vn+ TiVi   Fanpage Twitter  Fanpage FaceBook
Loading
                                         

Bản Tin Câu Lạc Bộ Pa Tin Im-Pod                                                                          
Diễn đàn Vn+
Tiêu Điểm

Tình Yêu - Giới Tính

1001 Bí Ẩn

Tổng hợp phần mềm

Ebook

Thủ Thuật IT

Thủ Thuật Blog

Video Clip

Lạ & Fun


You are not connected. Please login or register

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down  Thông điệp [Trang 1 trong tổng số 1 trang]

El Kun

El Kun
Super Moderator
Super Moderator
Thuật toán sắp xếp bẳng Radix sort

Code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
////Radix sort
int getMax(int a[],int n)
{
   int max=a[0];
   for(int i=1;i<n;i++)
      if(max<a[i])
         max=a[i];
   return max;
}
int countDigit(int n)
{
   int count=0;
   while(n)
   {
      count++;
      n/=10;
   }
   return count;
}
int getDigit(int n,int t)
{
   int tt=1;
   for(int i=0;i<t;i++)tt*=10;
   return ((n/tt)%10);
}
void send2Box(int a[],int n,int *b[10],int num[10],int t)
{
   for(int i=0;i<n;i++)
   {
      int tt=getDigit(a[i],t);
      b[tt][num[tt]++]=a[i];
   }
}
void getValue(int a[],int *b[10],int nn[10])
{
   int j=0;
   for(int i=0;i<10;i++)
   {
      if(nn[i]!=0)
      {
         for(int k=0;
         k<nn[i];
         k++)a[j++]=b[i][k];
         nn[i]=0;
      }
   }
}
void radixsort(int a[],int n)
{
   int *Box[10];
   int number[10];
   for(int i=0;i<10;i++)
   {
      Box[i]=new int [n];
      if(Box[i]==NULL)
      {
         printf("Not enough");
         exit(0);
      }
      number[i]=0;
    }
   int nn=countDigit(getMax(a,n));
   for(int i=0;i<nn;i++)
   {
      send2Box(a,n,Box,number,i);
      getValue(a,Box,number);
   }
}
void xuat(int a[], int n)
{
   int i=0;
   printf("\n\t");
   for (i=0;i<n;i++)
   {
      printf("%-6d",a[i]) ;
      if ((i+1) % 10 == 0)
      printf("\n\t");
   }
}
void main()
{
   clrscr();
   int i,n,A[100];
   do
   {
      printf("\n\tNhap so phan tu mang\n\t( n>0 va n<=100) : ");
      scanf("%d",&n);
      }while (n<0||n>100);
   for (i=0;i<n;i++)
   {
      printf("Nhap A[%d]=",i);
      scanf("%d",&A[i]);
   }
   printf("\n\tMang moi nhap vao:\n");
   xuat(A,n);
   printf("\n\n\tMang da sap xep :\n");
   radixsort(A,n);
   xuat(A,n);
 getch();
}

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang  Thông điệp [Trang 1 trong tổng số 1 trang]

Permissions in this forum:
Bạn không có quyền trả lời bài viết

 

Legend :  [ Vn-plus Founder ] [ Administrator ] [ Super Moderator ] [ Moderator ] [ Member ] [ VIP member ] [ banned ]



Free Auto Backlink Exchange ServiceFree Backlink Exchange For SeoVietnam BacklinksTravel BacklinksFree BacklinksText Backlink ExchangesText Back Link ExchangeFlorists LinksOverShopping Link ExchangeFree Automatic LinkWeb Link Exchange - Linkcsere

    Diễn Đàn Vn-Plus.Org | Thống kê | Liên hệ | Báo cáo lạm dụng  | Bạn muốn quảng cáo | Lên Đầu Trang

    Powered by: PHPBB2. Copyright © 2011  Diễn Đàn Mở VN+
    Contact: Vn-plus Founder . Yahoo: Nobita_xuka_ccy. Địa chỉ: Từ Tây - Yên Phú - Yên Mỹ - Hưng Yên
    BQT không chịu trách nhiệm bất cứ nội dung nào của thành viên đăng tải

Liên Kết Vớivn+

Free forum | ©phpBB | Free forum support | Báo cáo lạm dụng | Thảo luận mới nhất