즉, 필요에 따라 더 똑똑한 알고리즘이 있을 수는 있다. 리스트는 항상 양수만 포함한다는 것을 안다면 앞의 코드에 양수가 아닌 숫자를 처리하는 코드를 추가할 수 있다.
public static bool Contains(int[] array, int lookFor) { if (lookFor < 1) { return false; } for (int n = 0; n < array.Length; n++) { if (array[n] == lookFor) { return true; } } return false; }
이렇게 하면 음수인 경우를 몇 번 호출하느냐에 따라 알고리즘이 훨씬 빨라질 수 있다. 기껏해야 이 함수에 항상 음수나 0이 입력된다면 배열에 정수 수십억 개가 있더라도 결과를 즉시 반환할 것이다. 최악은 함수 호출에 항상 양수가 들어오는 경우이다. 단지 추가적인 불필요한 검사만 하게 되는 꼴이다. C#에는 uint라는 부호 없는 정수 타입이 있으며, 이러한 특정 타입을 사용할 수 있다. 다음과 같이 수정하면 항상 양수를 입력으로 받을 수 있으며, 해당 규칙을 위반하면 컴파일러가 양수를 검사하므로 성능에 문제가 발생하지 않는다.