シェルソート(降順)でソートした数の
先頭5個と末尾5個を表示したいのですが望むような結果になりません。
ご指摘お願いします。
データ数=5
1
5
3
4
2
1,5,3,4,2
1,5,3,4,2
#include <stdio.h> #include <stdlib.h> int shell(int *D, int n) { int i,j,x,gap; gap = n/2; while(gap > 0) { for(i=1; i<n; i++) { x = D[i]; j = i; while((D[j-gap] < x) && (j >0)) { D[j] = D[j-gap]; j--; } D[j]=x; gap = gap / 2; } } } int main() { int n=0,a=0; int *D; printf("データ数="); scanf("%d",&n); D = (int*)malloc(sizeof(int)*n); for(a=0; a<n; a++) { scanf("%d",&D[a]); } shell(D,n); printf("%d,%d,%d,%d,%d\n",D[0],D[1],D[2],D[3],D[4]); printf("%d,%d,%d,%d,%d\n",D[n-5],D[n-4],D[n-3],D[n-2],D[n-1]); free(D); return 0; }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/15 08:41
2018/01/15 09:21
2018/01/15 09:22
2018/01/15 10:28