Контрольная сумма для целочисленного массива?

У меня есть массив размером 4,9,16 или 25 (в зависимости от ввода), и числа в массиве одинаковы, но меньше на единицу (если размер массива равно 9, то самым большим элементом в массиве будет 8) числа начинаются с 0 и я хотел бы сделать некоторый алгоритм для создания какой-то контрольной суммы для массива, чтобы я мог сравнить, что 2 массива равны, не перебирая весь массив и проверяя каждый элемент один за другим.

Где я могу получить такую ​​информацию? Мне нужно что-то максимально простое. Спасибо.

редактировать: просто чтобы понять, чего я хочу:

-Все числа в массиве различны, поэтому [0,1,1,2] недопустимо, потому что есть повторяющийся элемент (1)

-Положение чисел имеет значение, поэтому [0,1,2,3] не совпадает с [3,2,1,0]

-Массив будет содержать число 0, так что это также должно приниматься во внимание.

РЕДАКТИРОВАТЬ:

Хорошо, я попытался реализовать алгоритм Флетчера здесь: http://en.wikipedia.org/wiki/Fletcher%27s_checksum#Straightforward

int fletcher(int array[], int size){
  int i;
  int sum1=0;
  int sum2=0;
  for(i=0;i

Честно говоря, я понятия не имею, что делает обратная линия, но, к сожалению, алгоритм не работает. Для массивов [2,1,3,0] и [1,3,2,0] я получаю одинаковую контрольную сумму.

РЕДАКТИРОВАТЬ2:

хорошо, вот еще один, контрольная сумма Адлера http://en.wikipedia.org/wiki/Adler-32#Example_implementation

#define MOD 65521;

unsigned long adler(int array[], int size){
  int i;
  unsigned long a=1;
  unsigned long b=0;
  for(i=0;i

Это тоже не работает. Массивы [2,0,3,1] и [1,3,0,2] генерируют одинаковую контрольную сумму. Я теряю надежду, есть идеи?

7
задан MinaHany 5 June 2012 в 08:00
поделиться