网站微信支付开发,建设公司网站的会计分录,西安建站模板厂家,外贸流程实现逻辑 ① 先取一个小于n的整数d1作为第一个增量#xff0c;把文件的全部记录分成d1个组。 ② 所有距离为d1的倍数的记录放在同一个组中#xff0c;在各组内进行直接插入排序。 ③ 取第二个增量d2小于d1重复上述的分组和排序#xff0c;直至所取的增量dt1(dt小于dt-l小于……实现逻辑 ① 先取一个小于n的整数d1作为第一个增量把文件的全部记录分成d1个组。 ② 所有距离为d1的倍数的记录放在同一个组中在各组内进行直接插入排序。 ③ 取第二个增量d2小于d1重复上述的分组和排序直至所取的增量dt1(dt小于dt-l小于…小于d2小于d1)即所有记录放在同一组中进行直接插入排序为止。
void print_array(int a[], int n){for (int i 0; i n; i){cout a[i] ;}cout endl;
}void shellSort(int arr[], int nSize)
{for(int d nSize / 2; d 1; d d / 2){for(int k 0; k d; k){for(int i k d; i nSize; i i d){int value arr[i];int ipos i;while((ipos - d) 0 value arr[ipos - d]){arr[ipos] arr[ipos - d];ipos ipos - d;}arr[ipos] value;}}}
}int main(){int arr[] {10, 8, 11, 7, 4, 12, 9, 6, 5, 3};int len sizeof(arr)/sizeof(arr[0]);int newArray[10] {0};cout 排序前;print_array(arr, len);shellSort(arr, len);cout 排序后;print_array(arr, len);return 0;
}输出结果