程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c語言-關於希爾排序的c代碼問題

c語言-關於希爾排序的c代碼問題

編輯:編程綜合問答
關於希爾排序的c代碼問題

#include
#include

void xishu(int a[], int n)
{
int i, j;
int d = n / 2;
while(d > 0)
{
for (j = 0, i = d; i < n; i++,j++)
{
if (a[i] < a[j])
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
d = d / 2;
}
}

void main()
{
for (int i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
xishu(a, 10);
printf("\n");
for (int j = 0; j < 10; j++)
{
printf("%3d", a[j]);
}

system("pause");

}

這是我根據希爾排序思想自己寫的程序,程序可以執行出來,但是為什麼每次都是有一個數是亂的,其他都是有序的啊,求大神解答?

最佳回答:


for (j = 0, i = d; i < n; i++,j++)
{

        if (a[i] < a[j])
        {
             int temp = a[i];
             a[i] = a[j];
             a[j] = temp;
        }
    }
    這裡錯了,只調換了2個數字而已,然而當你d=2的時候,每組都有5個數。
pigqhf
pigqhf
pigqhf
pigqhf
pigqhf
pigqhf
pigqhf
dxskx
dxskx
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved