Du kan använda dig av Quiksort för att sortera arrayen.
Jag hittade en sida som beskriver detta bra. Kolla på animationen så ser du en visualisering av hur algoritmen fungerar
http://odin.ee.uwa.edu.au/~morris/Year2/PLDS210/qsort.html
// BeatBox
5 svar · 730 visningar · startad av PatrikH
Hoppas någon har något förslag till detta...
Har en array med 26 "heltalsfack". Vad jag vill göra är att plocka ut de 8 största värdena samt att ha reda på vid vilket index respektive värde hittades.
Kanske ska göra det här med vektorer, men då jag aldrig har använt sådana förrut, så vore det smidigt om det gick att göra med hjälp av arrays.
Du kan använda dig av Quiksort för att sortera arrayen.
Jag hittade en sida som beskriver detta bra. Kolla på animationen så ser du en visualisering av hur algoritmen fungerar
http://odin.ee.uwa.edu.au/~morris/Year2/PLDS210/qsort.html
// BeatBox
...Eller om du vill knacka kod och klura lite själv kan du använda den här funktionen:
void sort(int *t1,const int &len){
bool changed;
do{
changed = false;
for(int i=0;i<len-1;i++){
if(t1[i] > t1[i+1]){
int temp = t1[i];
t1[i]=t1[i+1];
t1[i+1]=temp;
changed = true;
}
}
}while(changed);
}
Den sorterar en godtyckligt stor int array till stigande ordning. Bara att plocka ut de 8 sista talen efter sorteringen. Men den sorterar en array som redan finns så ska du behålla den arrayen intakt får du göra en arbetskopia först, vilket även kan användas om du ska hitta index (genom att t.ex jämföra fälten).
Grov pseudo för vidare implementering:
- kopiera arrayen
- sort(kopian,storleken)
- for (index;index<strlk;index++)
om kopian == arrayen : spara index
... ungefär :)
Bouble sort är enklast tycker jag.
Ett exempel:
#include <iostream>
using namespace std;
int main()
{
int lista[5]={0, 3, 7, -2, 9},i ,x, y, temp;
for (x=0; x<4; ++x) {
for (i=0; i<4-x; ++i)
if (lista[i] > lista[i+1]) {
temp=lista[i];
lista[i]=lista[i+1];
lista[i+1]=temp;
}
cout<<x+1<<" =-> ";
for (y=0; y<5; ++y) {
if (lista[y] >= 0) cout<<" ";
cout<<lista[y]<<" ";
}
cout<<endl;
}
return 0;
}
Bra... även min variant är en bubblesort ;)