Jump to content
  • 0

pomoc [HELP] Bubble sort


bogi007

Dotaz

Ahoj,

Snažím se upravit bubble sort řazení čísla od nejmenšího po největší, ale nedaří se mi, proto žádám vás.

 

Takto řadí od největšího po nejmenší.

 

 

 

bubbleSort(array[], length)
{
new i,j;
for(i=0;i<length;i++)
{
	for(j=0;j<i;j++)
	{
		if(array[i]>array[j])
		{
			new temp=array[i]; //swap
			array[i]=array[j];
			array[j]=temp;
		}
	}
}
}

Link to comment
Share on other sites

3 odpovědí na tuto otázku

Recommended Posts

  • 0

čo presne to ma robiť? zoradiť "array" od najväčšieho po najmenšie?

 

ak áno tak použi toto, funguje to, teraz som to narychlo zrobil a skúšal:

 

 

 

 

bubbleSort(array[], lenght) //najlepšie ak lenght bude strlen(array)

{

new maxval, bool:used[1024] = {false, ...}, save[1024]; //array môže mať maximalne 1024 znakov

for(new i=0; i<lenght; i++) save = array;

 

for(new i=0; i<lenght; i++)

{

maxval = -1;

 

new order;

for(new a=0; a<lenght; a++) if(used[a] == false) if(save[a] > maxval)

{

maxval = save[a];

array = save[a];

order = a;

}

 

used[order] = true;

}

}

Link to comment
Share on other sites

  • 0

podľa toho čo napisal lyrics na začiatku by som neodporučoval strlen použivať keďže strlen počíta znaky kým nepríde po hodnotu 0 ktorá sa v tomto prípade može nachádzať aj v strede arrayu a pri použití strlen by sa ďalšie hodnoty vynechali, ďalej dá sa to urobiť viac efektívnejšie bez využitia nejakých ďalších rozsiahlych pomocných arrayov ...

na wikipedii je vidieť princíp bubbleSortu a je to tak že vždy sa v cykle kontrolujú 2 susedné hodnoty v arrayi a porovnávajú sa ich veľkosti (ak je ľavý väčši ako pravý tak sa prehodia ) a to sa opakuje až kým sa nezoradia

 

stock bubbleSort(srcArray[],len)
{
   new bool:ordered=true;
   do
   {
       ordered=true;
       for(new idx=0;idx<len-1;idx++)
       {
           if(srcArray[idx]>srcArray[idx+1])
           {
               new temp=srcArray[idx];
               srcArray[idx]=srcArray[idx+1];
               srcArray[idx+1]=temp;
               ordered=false;
           }
       }
   }while(!ordered);
}

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...