[C++] 希尔排序 →→→→→进入此内容的聊天室

来自 , 2019-03-24, 写在 C++, 查看 148 次.
URL http://www.code666.cn/view/6157966f
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void printArray(int* arr, int len);
  6. void shellSort(int *arr, int len);
  7.  
  8. int main()
  9. {
  10.         int arr[] = {1, 4, 3, 10, 4, 7, 2, 5};
  11.         int len = sizeof(arr)/sizeof(*arr);
  12.  
  13.         printArray(arr, len);
  14.         shellSort(arr, len);
  15.         printArray(arr, len);
  16.  
  17.         cin.get();
  18.         return 0;
  19. }
  20.  
  21. void shellSort(int *arr, int len)
  22. {
  23.         int i, gap;
  24.         for(gap = len /2; gap > 0; gap /= 2)
  25.         {
  26.                 for(i = gap; i < len; i++)
  27.                 {
  28.                         if (arr[i] < arr[i - gap])
  29.                         {
  30.                                 int tmp = arr[i];
  31.                                 int j = i - gap;
  32.                                 while(j >= 0 && tmp < arr[j])
  33.                                 {
  34.                                         arr[j + gap] = arr[j];
  35.                                         j -= gap;
  36.                                 }
  37.                                 arr[j + gap] = tmp;
  38.                         }
  39.                 }
  40.         }      
  41. }
  42.  
  43. void printArray(int* arr, int len)
  44. {
  45.         for(int i = 0; i < len; i++)
  46.         {
  47.                 cout << arr[i] << " ";
  48.         }
  49.         cout << endl;
  50. }
  51. //cpp/8812

回复 "希尔排序"

这儿你可以回复上面这条便签

captcha