私は選択ソートに取り組んでいます。
私の問題は、「void sort」からすべてのコードを削除すると、プログラムが実行されることです。すべてのコードを元に戻すとすぐに、「voidsort」は「voidsort」の最初の「printf」関数に到達しません。何がすべてをぶら下げているのかわかりません。
ここでの2番目の問題は、この関数がこれを実行する必要があることです。
それらのarray[]をvars:x(開始点)temp(一時的な最小数)およびk(現在の数)で実行します。反復ごとに、xから開始し、temp = xを設定し、k =( x + 1)次に、配列の最後に到達するまでk++。array[k]がarray[temp]より小さい場合は、tempをkに設定する必要があります。そして最後に:array[x]とarray[temp]を交換し、(x + 1)からやり直します
以前は機能していたとき、私が得た唯一の結果はx = 7(リストの最後)であり、最後の数値のみが出力されました。:/ wat do
また、必要ではありませんが、void関数からソートされた配列をどのように返すのですか?グローバル変数?他に何か?
#include <stdio.h>
#define SIZE 8
void sort(int array[], int size)
{
printf("starting sort, declaring vars...");
int temp, placeholder, x, k;
printf("setting x...");
x = 0;
printf("size(%d), i(%d)", size, x);
printf("starting sort loop...");
while (x < (size - 1));
{
k = (x + 1);
temp = x;
while(k < size)
{
if(array[k] < array[temp])
temp = k;
k++;
}
printf("array[%d] is %d from array[%d]\n", x, array[temp], temp);
placeholder = array[temp];
array[temp]= array[x];
array[x] = placeholder;
printf("%d ", array[x]);
x++;
}
printf("\n");
}
int main(void)
{
int numbers[SIZE] = {4, 15, 16, 50, 8, 23, 42, 108 };
int i;
for (i = 0; i < SIZE; i++)
printf("%d ", numbers[i]);
printf("\ncounted and sorting...\n");
sort(numbers, SIZE);
for (int i = 0; i < SIZE; i++);
printf("%d", numbers[i]);
printf("\n");
return 0;
}