2017-07-09 1 views
0
void sort(int values[], int n) 
{ 
    int smallestSpot = 0; 
    for (long long i = 0; i < n ; i++) 
    { 
     int smallest = values[i]; 
     for(long long j = i; j < n - i ; j++) //find the smallest int in array 
     { 
      if(values[j] < smallest) 
      { 
       smallestSpot = j; 
       smallest = values[j]; 
      } 
     } 
     values[smallestSpot] = values[i]; 
     values[i] = smallest; 
    } 
    return; 
} 

Mon algorithme de tri écrase le premier chiffre et je ne vois pas pourquoi. Merci.Le programme de tri ne fonctionne pas, je ne sais pas pourquoi

+0

L'avez-vous parcouru avec un débogueur ou inspecté les variables en les imprimant? – Carcigenicate

+0

'long long j = i;' -> 'long long j = i + 1;' –

+0

@ cᴏʟᴅsᴘᴇᴇᴅ thats comment je l'ai eu à l'origine et cela n'a pas fonctionné –

Répondre

4

Merci pour COLDSPEED et GAURANG VYAS en effectuant que les changements que nous atteignons à la version de travail du code.

code

#include<stdio.h> 


void 
sort(int values[], int n) 
{ 

int smallestSpot = 0; 

for (long long i = 0; i < n ; i++){ 
    int smallest = values[i]; 
    smallestSpot = i; 
    for(long long j = i+1; j < n ; j++){ //find the smallest  int in array 
     if(values[j] < smallest){ 
      smallestSpot = j; 
      smallest = values[j]; 
     } 
    } 
    values[smallestSpot] = values[i]; 
    values[i] = smallest; 
} 

} 



int main() 
{ 
    int arr[5] = {1,2,8,9,10}; 
    sort(arr,5); 
    for(int i=0;i<5;i++){ 
     printf("%d\n",arr[i]); 
    } 
    return 0; 
} 

Avant essayer de coder tracer votre algorithme avec un stylo et du papier. Nous avons beaucoup d'algorithmes de tri que je suggère de voir this lien et acquérir une compréhension visuelle sur les problèmes de tri et la façon de les résoudre.

+1

Serait gentil de fournir un échantillon de travail avec ideone ... mais +1 néanmoins. –