Написал 7е задание на быструю сортировку
This commit is contained in:
parent
c6539e2868
commit
c33f7295d5
10 changed files with 280 additions and 22 deletions
26
Sorting/7Ex/quicksort.c
Normal file
26
Sorting/7Ex/quicksort.c
Normal file
|
@ -0,0 +1,26 @@
|
|||
#include "quicksort.h"
|
||||
|
||||
void quicksort(double * array, int length) {
|
||||
int head, si = 0, ei = length - 1;
|
||||
double temp;
|
||||
|
||||
srand(time(NULL));
|
||||
head = rand() % length;
|
||||
|
||||
do {
|
||||
while (array[si] < array[head]) ++si;
|
||||
while (array[ei] > array[head]) --ei;
|
||||
|
||||
if (si < ei) {
|
||||
temp = array[si];
|
||||
array[si] = array[ei];
|
||||
array[ei] = temp;
|
||||
|
||||
if (si == head || ei == head) head = si == head ? ei++ : si--;
|
||||
++si, --ei;
|
||||
}
|
||||
} while (si < ei);
|
||||
|
||||
if (si > 1) quicksort(array, si);
|
||||
if (ei < length - 2) quicksort(&array[head + 1], length - ei - 1);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue