الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال في radix sort

بدأه ghith-js في 16 أبريل 2011 · 2 رد · 977 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام عليكم

اخوني هذا برنامج صغير كتبتوه عنradix sort ولا كن لا اعرف المشكلة لا يعمل عندي هذه محاولتي

#include <iostream.h>

#include <conio.h>

#define MAX 10

class radixsort{

int arr[MAX],n;

public:

void getdata();

void showdata();

void sortLogic();

};

void radixsort :: getdata(){

cout<<"How many elements you require : ";

cin>>n;

for(int i=0;i<n;i++)

cin>>arr
;

}

void radixsort :: showdata(){

cout<<"\n--Display--\n";

for(int i=0;i<n;i++)

cout<<arr
<<" ";

}

void radixsort :: sortLogic(){

//for base 10int temp;

int bucket[10][20], buck_count[10], b[10];

int i,j,k,r,no_of_passes=0,divisor=1,largest,pass_no;

largest=arr[0];

for(i=1;i<n;i++) //Find the largest Number

{

if(arr
> largest)

largest=arr
;

}

while(largest > 0) //Find number of digits in largest number

{

no_of_passes++;

largest /= 10;

}

for(pass_no=0; pass_no < no_of_passes; pass_no++){

for(k=0; k<10; k++)

buck_count[k]=0; //Initialize bucket countfor(i=0;i<n;i++){

r=(arr
/divisor) % 10;

bucket[r][buck_count[r]++]=arr
;

}

i=0; //collect elements from bucketfor(k=0; k<10; k++){

for(j=0; j<buck_count[k]; j++)

arr[i++] = bucket[k][j];

}

divisor *= 10;

}

}

void main(){

clrscr();

cout<<"\n*****Radix Sort*****\n";

radixsort obj;

obj.getdata();

obj.sortLogic();

obj.showdata();

getch();

#2

الان الكود يعمل ولكن راجع ال algorithm

#include <iostream>
#include <conio.h>

using namespace std;

#define MAX 100

class radixsort{
    	int arr[MAX],n;
	public:
    	void getdata();
    	void showdata();
    	void sortLogic();
};

void radixsort :: getdata(){
   	cout<<"How many elements you require : ";
   	cin >> n;
  	for(int i=0;i<n;i++)
  	cin >> arr;
}

void radixsort :: showdata(){
   	cout<<"\n--Display--\n";
   	for(int i=0;i<n;i++)
         	cout<<arr<<" ";
}

void radixsort :: sortLogic(){
//for base 10int temp;
  	int bucket[10][20], buck_count[10], b[10];
  	int i,j,k,r,no_of_passes=0,divisor=1,largest,pass_no;

  	largest=arr[0];

 	for(i=1;i<n;i++) //Find the largest Number
 	{
       	if(arr > largest)
            	largest=arr;
 	}

	while(largest > 0) //Find number of digits in largest number
	{
       	no_of_passes++;
       	largest /= 10;
	}

	for(pass_no=0; pass_no < no_of_passes; pass_no++){

        	for(k=0; k<10; k++)
                   	buck_count[k]=0; //Initialize bucket countfor(i=0;i<n;i++){
        	r=(arr/divisor) % 10;
       	bucket[r][buck_count[r]++]=arr;
	}
 	i=0; //collect elements from bucketfor(k=0; k<10; k++){
 	for(j=0; j<buck_count[k]; j++){
         	arr[i++] = bucket[k][j];
  	}

 	divisor *= 10;
}

int main(){

	cout<<"\n*****Radix Sort*****\n";
	radixsort obj;
	obj.getdata();
	obj.sortLogic();
	obj.showdata();
	getch();

	return 0;

}

بالتوفيق


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#3

كل الشكر للأخ على الرد

1

مواضيع مشابهة