2017-07-09 22 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; 
} 

私のソートアルゴリズムは、最初の番号が上書きされてしまっているのを見つけられません。ありがとう。ソートプログラムが動作していない、わからない理由

+0

これをデバッガで実行したか、変数を出力して検査しましたか? – Carcigenicate

+0

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

+0

@cᴏʟᴅsᴘᴇᴇᴅそれは元々どのように働いていたのですか? –

答えて

4

変更を実行していただきありがとうございます。COLDSPEEDとGAURANG VYASのおかげで、作業バージョンのコードに到達しました。

コード

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

ペンと紙を使用してアルゴリズムをトレースコード化することを試みる前に。 私は多くの並べ替えアルゴリズムを持っており、thisのリンクを見て、ソートの問題と解決方法を視覚的に理解することをお勧めします。

+1

ideoneで動作するサンプルを提供するのはいいですが、それにもかかわらず+1です。 –

関連する問題