经典的写法,今天刚学的。
有点难懂。
#include <iostream>
using namespace std;
int main()
{
int nums[10] = {49, 38, 65, 97, 26, 13, 27, 49, 55, 4};
for(int cut = 10/2;cut > 0;cut /= 2)
for(int m = 0;m < cut;m++)
for(int u = m+cut;u < 10;u+=cut)
if(nums[u] < nums[u-cut])
{
int temp = nums[u];
int k = u - cut;
while(k >= 0 && temp < nums[k])
{
nums[k+cut] = nums[k];
k -= cut;
}
nums[k+cut] = temp;
}
for(int m = 0;m < 10;m++)
cout << nums[m] << ' ';
return 0;
}