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."