(i = 0; i < LEN; i++) {
22std::cout << arr[i] <<
", ";
24std::cout << std::endl;
31template<
typenameT,
size_tN>
46 const unsigned intgaps[] = {701, 301, 132, 57, 23, 10, 4, 1};
47 const unsigned intgap_len = 8;
50 for(g = 0; g < gap_len; g++) {
51 unsigned intgap = gaps[g];
52 for(i = gap; i < LEN; i++) {
55 for(j = i; j >= gap && (arr[j - gap] - tmp) > 0; j -= gap) {
56arr[j] = arr[j - gap];
66template<
typenameT,
size_tN>
87int compare(
const void*a,
const void*b) {
88T arg1 = *
static_cast<constT *
>(a);
89T arg2 = *
static_cast<constT *
>(b);
107 int*
data=
new int[NUM_DATA];
108 int*data2 =
new int[NUM_DATA];
112 for(
inti = 0; i < NUM_DATA; i++)
113 data[i] = data2[i] = (std::rand() % range) - (range >> 1);
116std::clock_t start = std::clock();
118std::clock_t end = std::clock();
119 doubleelapsed_time =
static_cast<double>(end - start) / CLOCKS_PER_SEC;
120std::cout <<
"Time spent sorting using shell_sort2: "<< elapsed_time
124start = std::clock();
125std::qsort(data2, NUM_DATA,
sizeof(data2[0]),
compare<int>);
128elapsed_time =
static_cast<double>(end - start) / CLOCKS_PER_SEC;
129std::cout <<
"Time spent sorting using std::qsort: "<< elapsed_time
132 for(
inti = 0; i < NUM_DATA; i++) {
133assert(
data[i] == data2[i]);
147 float*
data=
new float[NUM_DATA];
148 float*data2 =
new float[NUM_DATA];
152 for(
inti = 0; i < NUM_DATA; i++) {
153 data[i] = data2[i] = ((std::rand() % range) - (range >> 1)) / 100.;
157std::clock_t start = std::clock();
159std::clock_t end = std::clock();
160 doubleelapsed_time =
static_cast<double>(end - start) / CLOCKS_PER_SEC;
161std::cout <<
"Time spent sorting using shell_sort2: "<< elapsed_time
165start = std::clock();
169elapsed_time =
static_cast<double>(end - start) / CLOCKS_PER_SEC;
170std::cout <<
"Time spent sorting using std::qsort: "<< elapsed_time
173 for(
inti = 0; i < NUM_DATA; i++) {
174assert(
data[i] == data2[i]);
183int main(
intargc,
char*argv[]) {
185std::srand(std::time(NULL));
188std::cout <<
"Test 1 - 100 int values - passed. \n";
190std::cout <<
"Test 2 - 1000 int values - passed.\n";
192std::cout <<
"Test 3 - 10000 int values - passed.\n";
195std::cout <<
"Test 1 - 100 float values - passed. \n";
197std::cout <<
"Test 2 - 1000 float values - passed.\n";
199std::cout <<
"Test 3 - 10000 float values - passed.\n";
204NUM_DATA = atoi(argv[1]);
209 int*
data=
new int[NUM_DATA];
213std::srand(time(NULL));
214 for(i = 0; i < NUM_DATA; i++) {
216 data[i] = (std::rand() % range) - (range >> 1);
219std::cout <<
"Unsorted original data: "<< std::endl;
221std::clock_t start = std::clock();
223std::clock_t end = std::clock();
225std::cout << std::endl
226<<
"Data Sorted using custom implementation: "<< std::endl;
229 doubleelapsed_time = (end - start) * 1.f / CLOCKS_PER_SEC;
230std::cout <<
"Time spent sorting: "<< elapsed_time <<
"s\n"<< std::endl;
int main()
Main function.
void shell_sort(T *arr, size_t LEN)
void test_f(const int NUM_DATA)
void shell_sort(T *arr, size_t LEN)
int compare(const void *a, const void *b)
void show_data(T *arr, size_t LEN)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4