Advertisement
Zander-Bandoly

ShellSort2

Apr 25th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. #include<iostream>
  2. #include <cstdlib>
  3. #include <cassert>
  4. #include <ctime> // used in initialization of random number generator
  5. using namespace std;
  6. template <typename T>
  7. bool is_sorted (T* a, size_t size)
  8. {
  9. if(a!=NULL)
  10. {
  11. for (size_t i = 0; i < size-1; i += 1)
  12. {
  13. if(*(a+i)>*(a+i+1))
  14. return false;
  15. }
  16. cout<<"Array Sorted Successfully"<<endl;
  17. return true;
  18. }
  19. else
  20. {
  21. cout<<"Empty Array"<<endl;
  22. return false;
  23. }
  24. }
  25. template <typename T>
  26. void shell_sort (T* a, size_t size)
  27. {
  28. if(a!=NULL){
  29. for (size_t itv = size/2; itv > 0; itv /= 2)
  30. {
  31. for (size_t i = itv; i < size; i += 1)
  32. {
  33. T temp = *(a+i);
  34. size_t j;
  35. for (j = i; j >= itv && *(a+(j-itv)) > temp; j -= itv)
  36. *(a+j) = *(a+(j-itv));
  37. *(a+j) = temp;
  38. }
  39. }
  40. }
  41. else
  42. cout<<"Empty Array"<<endl;
  43. }
  44. int* create_array (size_t size)
  45. {
  46. int* a=new int;
  47. srand((unsigned)time(NULL));
  48. for (size_t i = 0; i < size; i++)
  49. *(a+i) = 1+ rand() % 10000;
  50. return a;
  51. }
  52.  
  53. int main ()
  54. {
  55. size_t size = 1000;
  56. int* a = create_array (size);
  57. shell_sort (a, size);
  58. assert (is_sorted (a, size));
  59. cout<<endl<<"The sorted Array is:\n";
  60. for(size_t i=0;i<size;i++)
  61. cout<<*(a+i)<<" ";
  62. delete a;
  63. return EXIT_SUCCESS;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement