Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Это самый оптимальный способ поменять значения переменных
- // Функция не будет использовать лишние переменные
- void swap(int *a,int *b){ // меняем значение переменных местами с помощью XOR
- *a^=*b;
- *b^=*a;
- *a^=*b;
- }
- // Это самая охуенная сортировка в твоей жизни!!!
- // Реализания быстрой сортировки на чистых указателях,
- // а значит что эта сортировка не будет использовать слишком много памяти,
- // при этом работая как советская промышленость в 1945
- void sort(int *begin,int *end){ // begin - указатель на первый элемент массива, end - указатель на элемент, идущий за последним элементом массива
- const int size=end-begin; // размер массива
- if(size==1){ // размер 1, нечего сортировать
- return;
- }
- if(size==2){ // если размер равен 2
- if(*begin>*(end-1)){ // если первый элемент строго больше второго
- swap(begin,end-1); // меняем их местами
- }
- return;
- }
- int x=*(begin+size/2); // опорный элемент
- int *i=begin; // первый элемент массива
- int *j=end-1; // последний элемент массива
- do{
- while(*i<x){ // пока значение i элемента массива меньше опорного, игнорируем
- i++; //
- }
- while(*j>x){ // пока значение j элемента массива строго больше опорного, игнорируем
- j--; //
- }
- if(i-begin<j-begin){ // если i не меньше j
- swap(i,j); // меняем значения местами
- }
- }while(i!=j); // пока i и j не встретились
- if(i-begin>0){ // если левый массив не пуст
- sort(begin,i+1); // сортируем массив
- }
- if(end-j>1){ // если правый массив не пуст
- sort(j,end); // сортируем массив
- }
- }
Add Comment
Please, Sign In to add comment