#include <stdio.h>
#include <stdlib.h>
struct book
{
char title[15];
char author[15];
int price;
int pages;
};
void quicksort(struct book* mas, int first, int last)
{
int f = first, l = last;
int mid = mas[(f + l) / 2].price; //вычисление опорного элемента
do
{
while (mas[f].price < mid) f++;
while (mas[l].price > mid) l--;
if (f <= l) //перестановка элементов
{
struct book count = mas[f];
mas[f] = mas[l];
mas[l] = count;
f++;
l--;
}
} while (f < l);
if (first < l) quicksort(mas, first, l);
if (f < last) quicksort(mas, f, last);
}
int main()
{
struct book libry[5] = {
{ "Title 1", "Author1", 100, 200 },
{ "Title 2", "Author2", 900, 300 },
{ "Title 3", "Author3", 200, 400 },
{ "Title 4", "Author4", 800, 500 },
{ "Title 5", "Author5", 500, 600 }
};
quicksort(libry,0,4);
for(int i = 0; i < 5; i++)
{
printf("\n %d. %s ", i
+ 1, libry
[i
].
author); printf("%s %d %d", libry
[i
].
title, libry
[i
].
price, libry
[i
].
pages); }
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnN0cnVjdCBib29rCnsKICAgIGNoYXIgdGl0bGVbMTVdOwogICAgY2hhciBhdXRob3JbMTVdOwogICAgaW50IHByaWNlOwogICAgaW50IHBhZ2VzOwp9OwoKdm9pZCBxdWlja3NvcnQoc3RydWN0IGJvb2sqIG1hcywgaW50IGZpcnN0LCBpbnQgbGFzdCkKewogICAgaW50IGYgPSBmaXJzdCwgbCA9IGxhc3Q7CiAgICBpbnQgbWlkID0gbWFzWyhmICsgbCkgLyAyXS5wcmljZTsgLy/QstGL0YfQuNGB0LvQtdC90LjQtSDQvtC/0L7RgNC90L7Qs9C+INGN0LvQtdC80LXQvdGC0LAKICAgIGRvCiAgICB7CiAgICAgICAgd2hpbGUgKG1hc1tmXS5wcmljZSA8IG1pZCkgZisrOwogICAgICAgIHdoaWxlIChtYXNbbF0ucHJpY2UgPiBtaWQpIGwtLTsKICAgICAgICBpZiAoZiA8PSBsKSAvL9C/0LXRgNC10YHRgtCw0L3QvtCy0LrQsCDRjdC70LXQvNC10L3RgtC+0LIKICAgICAgICB7CiAgICAgICAgICAgIHN0cnVjdCBib29rIGNvdW50ID0gbWFzW2ZdOwogICAgICAgICAgICBtYXNbZl0gPSBtYXNbbF07CiAgICAgICAgICAgIG1hc1tsXSA9IGNvdW50OwogICAgICAgICAgICBmKys7CiAgICAgICAgICAgIGwtLTsKICAgICAgICB9CiAgICB9IHdoaWxlIChmIDwgbCk7CiAgICBpZiAoZmlyc3QgPCBsKSBxdWlja3NvcnQobWFzLCBmaXJzdCwgbCk7CiAgICBpZiAoZiA8IGxhc3QpIHF1aWNrc29ydChtYXMsIGYsIGxhc3QpOwp9CgppbnQgbWFpbigpCnsKICAgIHN0cnVjdCBib29rIGxpYnJ5WzVdID0gewogICAgICAgIHsgIlRpdGxlIDEiLCAiQXV0aG9yMSIsIDEwMCwgMjAwIH0sCiAgICAgICAgeyAiVGl0bGUgMiIsICJBdXRob3IyIiwgOTAwLCAzMDAgfSwKICAgICAgICB7ICJUaXRsZSAzIiwgIkF1dGhvcjMiLCAyMDAsIDQwMCB9LAogICAgICAgIHsgIlRpdGxlIDQiLCAiQXV0aG9yNCIsIDgwMCwgNTAwIH0sCiAgICAgICAgeyAiVGl0bGUgNSIsICJBdXRob3I1IiwgNTAwLCA2MDAgfQogICAgfTsKCiAgICBxdWlja3NvcnQobGlicnksMCw0KTsKCiAgICBmb3IoaW50IGkgPSAwOyBpIDwgNTsgaSsrKQogICAgewogICAgICAgIHByaW50ZigiXG4gJWQuICVzICIsIGkgKyAxLCBsaWJyeVtpXS5hdXRob3IpOwogICAgICAgIHByaW50ZigiJXMgJWQgJWQiLCBsaWJyeVtpXS50aXRsZSwgbGlicnlbaV0ucHJpY2UsIGxpYnJ5W2ldLnBhZ2VzKTsKICAgIH0KfQo=