---
title: "Sortering av array"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/40786-sortering-av-array"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "PatrikH"
published: "2002-04-03T12:32:15.000Z"
updated: "2002-04-04T14:45:41.000Z"
replies: 5
views: 747
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/40786-sortering-av-array"
---

# Sortering av array

## #1 — PatrikH, 2002-04-03T12:32Z

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.

Permalänk: https://www.webforum.nu/p/40786

## #2 — Beatbox, 2002-04-03T13:28Z

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

Permalänk: https://www.webforum.nu/p/634359

## #3 — PeW, 2002-04-03T13:31Z

...Eller om du vill knacka kod och klura lite själv kan du använda  den här funktionen:

```php
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   :)

Permalänk: https://www.webforum.nu/p/634361

## #4 — eas, 2002-04-03T17:07Z

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;
}
```

Permalänk: https://www.webforum.nu/p/637457

## #5 — PatrikH, 2002-04-04T12:48Z

Tack!

Tack för alla förslag! Använde mig av PeW:s förslag och det fungerade utmärkt, Tack!

Permalänk: https://www.webforum.nu/p/637880

## #6 — PeW, 2002-04-04T14:45Z

Bra...   även min variant är en bubblesort  ;)

Permalänk: https://www.webforum.nu/p/637953

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/40786-sortering-av-array
