Простите-си++ и си только знаю.
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "RUSSIAN");
string str1;
int count=0;
cout << "Программа подсчета количества букв \"к\" строке" << endl;
str1 = "Строка";
for (int i = 0; i < str1.length(); i++)
if (str1[i] == 'к')
count++;
cout << "Буква встречается в строке " << count << " раз" << endl;
system("pause");
}
Итак...
Количество сравнений, это сколько раз твое число приравнивается к другим. Смотря на твою последовательность ты после сортировки массива сравниваешь число 2 со своим массивом. Приравниваешь его к первому числу это у тебя единица. Число один не совпадает с даным по условию числом, значит двигаемся дальше, и это уже будет другое сравнение. И так делаем пока не найдем число "2". Так как это число у тебя на втором месте, количество сравнений будет 2.
Если бы ты искал например число 4 количество сравнений было бы 5, так как число 4 стоит пятым в очереди.
<em>// PascalABC.NET 3.2, сборка 1437 от 03.05.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var a:=ArrRandom(ReadInteger('n='),-50,50); a.Println;
var t:=a.Partition((x,i)->i.IsEven);
var s:=t[0].Interleave(t[1].OrderByDescending(x->x));
if a.Length.IsOdd then a:=s.ToArray+Arr(a.Last)
else a:=s.ToArray;
a.Println
end.
<u>Примеры</u>
n= 14
42 -8 41 -26 -28 -44 -27 -24 13 -20 16 19 37 -26
42 19 41 -8 -28 -20 -27 -24 13 -26 16 -26 37 -44
n= 15
-21 41 32 8 -23 23 23 9 35 45 -42 37 -11 -8 22
-21 45 32 41 -23 37 23 23 35 9 -42 8 -11 -8 22