// Store integer 182 int intValue = 182; // Convert integer 182 as a hex in a string variable string hexValue = intValue.ToString("X"); // Convert the hex string back to the number int intAgain = int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);
из http://www.geekpedia.com/KB8_How-do-I-convert-from-decimal-to-hex-and-hex-to-decimal.html
Если вы добавите значение для поиска, вы можете уменьшить одно сравнение в каждом цикле, чтобы сократить время работы. Это может выглядеть как (i = 0 ;; i ++), если (array [i] == elementToSearch) возвращает i;.
Дело в том, что вы можете преобразовать цикл for в цикл while / repeat. Обратите внимание, как вы проверяете i & lt; длина каждый раз. Если вы его скрываете,
do {
} while (array[i++] != elementToSearch);
Тогда вам не нужно делать дополнительную проверку. (в этом случае array.length теперь больше)
Стандартный линейный поиск будет проходить через все элементы, проверяющие индекс массива каждый раз, чтобы проверить, когда он достиг последнего элемента. Как и ваш код.
for (int i = 0; i < length; i++) {
if (array[i] == elementToSearch) {
return i; // I found the position of the element requested
}
}
Но идея - поисковый запрос - это сохранить элемент в поиске в конце и пропустить поиск индекса массива, это уменьшит одно сравнение в каждая итерация.
while(a[i] != element)
i++;
Если вы добавляете значение для поиска в конце массива, то вместо использования цикла for
с инициализацией, условием и приращением вы можете использовать более простой цикл, например
while (array[i++] != ementToSearch)
;
. Затем условие цикла является проверкой значения, которое вы ищете, что означает, что меньше кода для выполнения внутри цикла.
Использование значения sentinel позволяет удалить переменную i и, соответственно, ее проверку и увеличение.
В вашем линейном поиске цикл выглядит следующим образом
for (int i = 0; i < length; i++) {
if (array[i] == elementToSearch) {
return i; // I found the position of the element requested
}
}
Таким образом, переменная i является введенный, инициализированный, сравниваемый на каждой итерации цикла, увеличенный и используемый для вычисления следующего элемента в массиве.
Также функция фактически имеет три параметра, если перейти к функции по искомому значению
int linearSearch(int array[], int length, int value) {
//...
Используя значение дозорной функции, эту функцию можно переписать следующим образом
int * linearSearch( int array[], int value )
{
while ( *array != value ) ++array;
return array;
}
. И внутри вызывающего абонента вы можете проверить, имеет ли массив значение следующим образом
int *target = linearSearch( array, value );
int index = target == array + size - 1 ? -1 : target - array;