# Sort an array a[0...n-1].
gaps = [701, 301, 132, 57, 23, 10, 4, 1]
foreach (gap in gaps)
# Do an insertion sort for each gap size.
for (i = gap; i < n; i += 1)
temp = a[i]
for (j = i; j >= gap and a[j - gap] > temp; j -= gap)
a[j] = a[j - gap]
a[j] = temp
這是Wikipedia頁面的僞代碼。 如果我的C++代碼根據它是正確的,我不確定。這裏是我的代碼:shell的僞代碼爲C++代碼
void shellSort(int *array, int array_size)
{
int e, i, j, temp;
for(e = 0; e < array_size; e++)
{
for(i = e; i < array_size; i++)
{
temp = array[i];
for(j = i; j >= e && array[j - e] > temp; j -= e)
{
array[j] = array[j-e];
}
array[j] = array[temp];
}
}
}
這裏是我的測試代碼:
int main()
{
int sizes[9] = {9,3,5,7,1,0,6,2,4};
int size = 0;
shellSort(sizes,size);
for(int i=0;i<size;i++)
{
cout << sizes[i] << endl;
}
return 0;
}
,但它顯示在屏幕上什麼都沒有。
那麼,它運行時,它與一些未分類的數據? – 2013-03-05 12:59:05
通常在C++中,你只需調用'std :: sort'。 – juanchopanza 2013-03-05 13:01:08
你似乎沒有使用'gaps []',你只是使用從0..n-1遞增的間隙('e')? – 2013-03-05 13:02:42