私は、整数配列の最大整数を選択し、それをa [n-1]の位置に配置する単純な(?)選択ソートプログラムをCで作成しようとしています[n-2]などの中で最大の数であり、最小の数が[0]になるまで続く。私は紙の下のコードを実行し、それは動作するはずだと思われるが、私はそれをコンパイルするときに私は間違った結果を得ている。私は明白な何かを欠いていますかCでの配列の選択ソート
/* The program implements selection sort*/
#include <stdio.h>
#include "simpio.h"
#define n 5
void GetArray(int a[]);
void SelectionSort(int a[]);
int FindMax(int a[], int high);
void swap(int a[], int p1, int p2);
void PrintArray(int a[]);
main()
{
int a[n];
GetArray(a);
SelectionSort(a);
PrintArray(a);
getchar();
}
void GetArray(int a[])
{
int i;
for(i=0;i<n;i++)
{
printf("Enter integer# %d", i+1);
a[i]=GetInteger();
}
}
void SelectionSort(int a[])
{
int i, max;
for(i=0;i<n;i++)
{
max=FindMax(a,i);
swap(a,max,(n-1-i));
}
}
int FindMax(int a[], int high)
{
int i, index;
index=high;
for(i=high;i<n;i++)
{
if(a[i]>a[index])
index=i;
}
return index;
}
void swap(int a[], int p1, int p2)
{
int temp;
temp=a[p2];
a[p2]=a[p1];
a[p1]=temp;
}
void PrintArray(int a[])
{
int i;
for(i=0;i<n;i++)
printf("a[%d]=%d\n", i, a[i]);
}
あなたはその行動は、あなたが期待するものから分岐点を見つけるまで、デバッガを介して実行、紙の上にそれをしようとしないでください。 –
私はOliに同意します - 問題がどこにあるか絞り込むことができれば、一般的に質問からより良い回答を得ることができます。デバッガやプリントステートメントはこれを行うのに役立ちます。質問することなく問題を見つけることさえできます。 –
"私は結果が間違っています。"どの入力が結果を作成しますか?サンプル入力を行い、実際に何を得るかを示します。 – abelenky