これが私のコードです:
#include <stdio.h>
#define SIZE 4
int main(int argc, const char * argv[])
{
double m[SIZE],tmp;
int i,min,max,c,k,l,pos;
for (i=0; i<SIZE; i++) {
printf("a%d? ",i);
scanf("%lf",&m[i]);
}
for (i=0; i<SIZE; i++)
printf("%.1lf ",m[i]);
printf("\n");
k = 1;
//========================
do {
min = 0;
max = k-1;
do
{
c = (min+max)/2;
if (m[c]>m[k])
{
min=c;
}
else {
max=c;
}
c = (min+max)/2;
}
while(min != c);
pos = min;
if(m[pos]<m[k])
{
pos++;
}
tmp = m[k];
l=k;
while (l>pos) {
m[l]=m[l-1];
l--;
}
m[pos]=tmp;
k++;
} while (k != SIZE);
for (i=0; i<SIZE; i++)
printf("%.1lf ",m[i]);
//========================
return 0;
}
誰かが助けてくれますか?なぜ並べ替えが機能しないのですか? 私が思うように、コードは正しいです。多分私はアルゴリズムに間違っていますか?
バイナリ挿入ソートを使用しようとしています。または、誰かがCコードの代替案を提供できますか(何が間違っているかを確認するため)?