Регистрация | Вход
// C#include <stdio.h>#include <stdlib.h>#include <time.h>#include "rnd.h"void quick_sort2(int[], int, int);int partition2(int[], int, int);int* longarr2(int len){ int* arr = calloc(len, sizeof(int)); for (int i = 0; i < len; ++i) { arr[i] = rnd_int(0, len); } return arr;}int cmpfunc(const void* a, const void* b) { return *(int*)a - *(int*)b;}int main_qsss(){ int N = 1000000; int* arr = longarr2(N); clock_t t0 = clock(); qsort(arr, N, sizeof(int), cmpfunc); clock_t t = clock() - t0; printf("\nqsort %i ms", t); arr = longarr2(N); t0 = clock(); quick_sort2(arr, 0, N - 1); t = clock() - t0; printf("\nqsort2 %i ms", t); //for (int i = 0; i < N; ++i) //{ // printf("%i\n", arr[i]); //} return 0;}void quick_sort2(int array[], int start, int end){ int split; if (start < end) { split = partition2(array, start, end); quick_sort2(array, start, split - 1); quick_sort2(array, split + 1, end); }}int partition2(int array[], int start, int end){ int value, curent, split, temp; value = array[start]; curent = start; split = end + 1; do { do { curent++; } while (array[curent] < value && curent <= end); do { split--; } while (value < array[split]); if (curent < split) { temp = array[curent]; array[curent] = array[split]; array[split] = temp; } } while (curent < split); array[start] = array[split]; array[split] = value; return split;}
// JS function longarr2(len) { let arr = []; for (var i = 0; i < len; i++) { arr[i] = Math.round((Math.random() * len)); } return arr; } function quick_sort2(array, start, end) { let split; if (start < end) { split = partition2(array, start, end); quick_sort2(array, start, split - 1); quick_sort2(array, split + 1, end); } } function partition2(array, start, end) { let value, curent, split, temp; value = array[start]; curent = start; split = end + 1; do { do { curent++; } while (array[curent] < value && curent <= end); do { split--; } while (value < array[split]); if (curent < split) { temp = array[curent]; array[curent] = array[split]; array[split] = temp; } } while (curent < split); array[start] = array[split]; array[split] = value; return split; } let N = 1000000; arr = longarr2(N); let t = performance.now(); quick_sort2(arr, 0, N - 1); console.log((performance.now() - t) + "ms");