storm_saeed
پنج شنبه 31 مرداد 1392, 22:56 عصر
سلام دوستان این کد مرتب سازی سطلی هست که تابع اش همونیه که تو ویکی پدیا هست
#include <iostream>
using namespace std;
void bucketSort(int a[],int size, int max)
{
int* buckets = new int[max];
int SIZE = size;
for(int j = 0 ; j <= max ; j++)
buckets[j] = 0;
for(int i = 0 ; i < SIZE ; i++)
++buckets[a[i]];
for(int i = 0 , j = 0 ; j <= max ; ++j)
for(int k = buckets[j] ; k > 0 ; k--)
a[i++] = j;
for(int i = 0 ; i < SIZE ; i++)
cout << a[i] << " ";
cout << "\n";
}
int main()
{
int size;
cout<<"enter yot size \n";
cin>>size;
int* a=new int [size];
cout<<"enter your numbers \n";
for(int i=0;i<size;i++)
cin>>a[i] ;
cout<<endl;
//////
int max = a[0];
for(int i = 0;i<size; i++)
if(a[i] > max)
max = a[i];
/////
bucketSort(a, size, max);
return 0;
}
مشکل من اینه که کلا نمیفهمم چیکار داره میکنه
اول که بیشترین عدد رو پیدا میکنه مثلا بین 10 تا عدد ,عدد 33 بیشترین بود بعد یه ارایه 33 تایی میسازه و بعدشم که هرعدد رو مثلا 5 رو توی bucket[5] میریزه و.. یعنی کلیات الگوریتمو میدونم ولی..
مشکل من اینجاست
for(int i = 0 ; i < SIZE ; i++)
++buckets[a[i]];
for(int i = 0 , j = 0 ; j <= max ; ++j)
for(int k = buckets[j] ; k > 0 ; k--)
a[i++] = j;
for(int i = 0 ; i < SIZE ; i++)
cout << a[i] << " ";
cout << "\n";
نمیفهمم چطور الگوریتمو اجرا کرده هدفش از
++buckets[a[i]];
و
for(int i = 0 , j = 0 ; j <= max ; ++j)
for(int k = buckets[j] ; k > 0 ; k--)
a[i++] = j;
چیه؟
ممنون
#include <iostream>
using namespace std;
void bucketSort(int a[],int size, int max)
{
int* buckets = new int[max];
int SIZE = size;
for(int j = 0 ; j <= max ; j++)
buckets[j] = 0;
for(int i = 0 ; i < SIZE ; i++)
++buckets[a[i]];
for(int i = 0 , j = 0 ; j <= max ; ++j)
for(int k = buckets[j] ; k > 0 ; k--)
a[i++] = j;
for(int i = 0 ; i < SIZE ; i++)
cout << a[i] << " ";
cout << "\n";
}
int main()
{
int size;
cout<<"enter yot size \n";
cin>>size;
int* a=new int [size];
cout<<"enter your numbers \n";
for(int i=0;i<size;i++)
cin>>a[i] ;
cout<<endl;
//////
int max = a[0];
for(int i = 0;i<size; i++)
if(a[i] > max)
max = a[i];
/////
bucketSort(a, size, max);
return 0;
}
مشکل من اینه که کلا نمیفهمم چیکار داره میکنه
اول که بیشترین عدد رو پیدا میکنه مثلا بین 10 تا عدد ,عدد 33 بیشترین بود بعد یه ارایه 33 تایی میسازه و بعدشم که هرعدد رو مثلا 5 رو توی bucket[5] میریزه و.. یعنی کلیات الگوریتمو میدونم ولی..
مشکل من اینجاست
for(int i = 0 ; i < SIZE ; i++)
++buckets[a[i]];
for(int i = 0 , j = 0 ; j <= max ; ++j)
for(int k = buckets[j] ; k > 0 ; k--)
a[i++] = j;
for(int i = 0 ; i < SIZE ; i++)
cout << a[i] << " ";
cout << "\n";
نمیفهمم چطور الگوریتمو اجرا کرده هدفش از
++buckets[a[i]];
و
for(int i = 0 , j = 0 ; j <= max ; ++j)
for(int k = buckets[j] ; k > 0 ; k--)
a[i++] = j;
چیه؟
ممنون