holas a todos estoy estudiando los algoritmos de ordenamiento y me en çcontre con el algoritmo bucketsort con codigo en c++ y todo, mi consulta es que al querer complilar me aparece me arroja errores y al depurar me aparece el siguinete mensaje" violacion de acceso a memoria (fallo de segmentacion) ocurrio en tu programa" ¿ me prodrian ayudar asolucionar este problemas,
<br><br>hasta ahora no le encuentro nada de raro , pero como dato en la depuracion me arroja que el problema esta en <span style="color: rgb(0, 0, 0);"><span style="background-color: rgb(255, 255, 153);"> if((temp->value) > array[j])
</span></span> mas abajo lo deje resaltado para que lo ubiquen, les doy las gracias por cualquier ayuda que me puedan dar<br><br>#include <iostream><br>#include <stdio.h><br>#include <conio.h><br> <br>using namespace std;
<br><br>class element //elementos<br>{<br>public:<br> int value;<br> element *next;<br> element()<br> {<br> value=NULL;<br> next=NULL;<br> }<br>};<br><br>class bucket //cada bucket tiene un rango especifico de valores
<br>{<br>public:<br>element *firstElement;<br>bucket()<br>{<br>firstElement = NULL;<br>}<br>};<br><br>int main() <br>{<br> int lowend=0; // minimo elemento<br> int highend=100; //max elemento
<br> int interval=10; //numero de intervalos <br> const int noBuckets=(highend-lowend)/interval; //calculo de numeros de buquet requeridos <br> bucket *buckets=new bucket[noBuckets]; <br> bucket *temp;
<br><br> for(int a=0;a<noBuckets;a++) //creando cada uno de los bucket <br> {<br> temp=new bucket;<br> buckets[a]=*temp;<br> }<br><br> cout<<"--------The Elements to be Sorted using Bucket sort are ------------------\n";
<br> int array[]={12,2,22,33,44,55,66,77,85,87,81,83,89,82,88,86,84,88,99};<br><br> for(int j=0;j<19;j++) //enviando elementos al bucket apropiado<br> {<br> cout<<array[j]<<endl;<br> element *temp,*pre;
<br> temp=buckets[array[j]/interval].firstElement;<br> if(temp==NULL)//si el elemto es el primero en el bucket <br> {<br> temp=new element;<br> buckets[array[j]/interval].firstElement=temp;
<br> temp->value=array[j];<br> }<br> else<br> {<br> pre=NULL;<br> while(temp!=NULL) //al salir de este while queda apuntando al lugar apropaido dentro del bucket
<br> {<br> if(temp->value>array[j])<br> break;// sale de s cilo si el elemento es menro que el apuntado<br> pre=temp;<br> temp=temp->next;
<br> }<br> <span style="color: rgb(0, 0, 0);"> <span style="background-color: rgb(255, 255, 153);"> if((temp->value) > array[j]) // if the new value is in betwen or at the begining****AQUI ME ARROJA PROBLEMAS
</span></span><br> {<br> if(pre==NULL) //inserta al principio si el bucket tiene elementos ya<br> {<br> element *firstNode;<br> firstNode=new element();
<br> firstNode->value=array[j];<br> firstNode->next=temp;<br> buckets[array[j]/interval].firstElement=firstNode;<br> }<br> else //insercion a la mitad
<br> {<br> element *firstNode;<br> firstNode=new element();<br> firstNode->value=array[j];<br> firstNode->next=temp;
<br> pre->next=firstNode;<br> }<br> }<br> else// si el valor creado en el ultimo en el bucket<br> {<br> temp=new element;
<br> pre->next=temp;<br> temp->value=array[j];<br> }<br><br> }<br> }<br><br> cout<<"------------------------The Sorted Elements Are---------------\n";
<br> for(int jk=0;jk<10;jk++)<br> {<br> element *temp;<br> temp= buckets[jk].firstElement;<br> while(temp!=NULL)<br> {<br> cout<<"*"<<temp->value<<endl;
<br> temp=temp->next;<br> }<br> }<br> cout<<"--------------------------------END--------------------------------\n";<br><br>system("pause");<br><br>return 1;<br>
<br>}<br><br clear="all"><br>-- <br> (\_/) *̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ *̡͌l̡*<br>(O.o) Geman Ponce<br>(> <) <a href="Http://german2006.pandela.net">Http://german2006.pandela.net
</a><br> "Es mejor que te odien por quien eres a que te amen por quien no eres."