***** Programmer *****

Học lập trình từ căn bản

Tìm kiếm
 
 

Display results as :
 


Rechercher Advanced Search

Latest topics
» Tuyên mộ thành viên
Wed Oct 24, 2012 5:28 am by quangvuspkt

» Bai tap Java can ban (Phan III )
Sat Sep 15, 2012 4:11 am by tsuyngam

» Bai tap Java can ban (Phan I )
Sat Sep 15, 2012 4:08 am by tsuyngam

» Một số bài tập C# căn bản
Thu Dec 15, 2011 1:58 pm by nguyenhoduykhang

» Xem thông tin máy tính bằng c#
Tue Nov 08, 2011 8:19 am by namcongtu288

» My First Browser Tree Program in VB.NET
Fri Aug 12, 2011 5:50 pm by kimthaohg85

» Giúp em bài C++ này với
Sun Jul 31, 2011 12:19 pm by kubin

» GIUP DO XAY DUNG BO GO TIENG VIET CODE C#
Sun Jul 24, 2011 8:40 pm by phonui82

» CHÀO TẤT CẢ CÁC THÀNH VIÊN TRONG DIỄN ĐÀN
Tue Jul 19, 2011 9:28 am by phonui82

Đăng Nhập

Quên mật khẩu



October 2017
MonTueWedThuFriSatSun
      1
2345678
9101112131415
16171819202122
23242526272829
3031     

Calendar Calendar


You are not connected. Please login or register

QUICKSOFT- SẮP XẾP NHANH DÙNG PHÂN HOẠCH

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]

Tesulakata

avatar
Thành viên
Thành viên
QUICKSOFT - SẮP XẾP NHANH
SỬ DỤNG PHÂN HOẠCH


• Thuật toán
Code:
void    Phan_hoach(int *a, int L, int R, int &pos)
{
   int i,j;
   i=L,j=R;
   pos=L;
   while(i<=j)
   {
      while(a[j]>a[pos]&&j>=L)    j=j-1;
      while(a[i]<=a[pos]&&i<=R)    i=i+1;
      if(i<j)
      {
         tam=a[i];
         a[i]=a[j];
         a[j]=tam;
         i++,j--;
      }
   }
   tam=a[L];
   a[L]=a[j];
   a[j]=tam;   
   pos=j;
}
void Quick_sort(int *a,int L, int R)
{
   int pos;
   if(L<R)
   {
      phan_hoach(a,L,R,pos);   //gọi thuật toán phan_hoach
   Quick_sort(a,L,pos-1);   //gọi đệ qui cho nửa <MPos
   Quick_sort(a,pos+1,R);   //gọi đệ qui cho nửa MPos

   }
}

Xem lý lịch thành viên http://programmer.4umer.com

Tesulakata

avatar
Thành viên
Thành viên
CODE THAM KHẢO CHO CÁC BÁC NữA

// quickSort.c
#include

void quickSort( int[], int, int);
int partition( int[], int, int);


void main()
{
int a[] = { 7, 12, 1, -2, 0, 15, 4, 11, 9};

int i;
printf("\n\nUnsorted array is: ");
for(i = 0; i < 9; ++i)
printf(" %d ", a[i]);

quickSort( a, 0, Cool;

printf("\n\nSorted array is: ");
for(i = 0; i < 9; ++i)
printf(" %d ", a[i]);

}



void quickSort( int a[], int l, int r)
{
int j;

if( l < r )
{
// divide and conquer
j = partition( a, l, r);
quickSort( a, l, j-1);
quickSort( a, j+1, r);
}

}



int partition( int a[], int l, int r) {
int pivot, i, j, t;
pivot = a[l];
i = l; j = r+1;

while( 1)
{
do ++i; while( a[i] <= pivot && i <= r );
do --j; while( a[j] > pivot );
if( i >= j ) break;
t = a[i]; a[i] = a[j]; a[j] = t;
}
t = a[l]; a[l] = a[j]; a[j] = t;
return j;
}







Xem lý lịch thành viên http://programmer.4umer.com

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