Регистрация | Вход
for (int i = 0; i < length; i++) input[i] = i;input.OrderBy(i => rnd.Int(length)).ToArray();
vector<pair<int, int>> seq;for (int i = 0; i < N; ++i) seq.push_back(pair<int, int>(rnd.Int(0, N * 100), i));sort(seq.begin(), seq.end());vector<int> res;for (int i = 0; i < N; ++i) res.push_back(seq[i].second);
// Пусть элементов 100.int data[100];// Вначале все элементы упорядоченыfor (int i=0; i<100; i++) data[i]=i;// Квадратичная сложность гарантирует, // что элементы будут перемешаны с большой вероятностьюfor (int i=0; i<100*100; i++){ int alfa = irand()%100; int omega = irand()%100; int zap=data[omega]; data[omega]=data[alfa]; data[alfa]=zap;}
int **seq; // двумерный массивseq = (int**) malloc(M * sizeof(int*)); // двумерный массив размерности MxN - это массив указателей на одномерные массивы размерности Nfor (i = 0; i < M; i++){ seq[i] = (int*) malloc(N * sizeof(int));}int *res; // одномерный массив размерности Nres = (int*) malloc(N * sizeof(int)); // под одномерный массив выделять память проще
int **seq0; // указатель на элемент массива seqint *res0; // указатель на элемент массива resseq0 = seq; // указатель seq0 указывает на самый первый элемент массива seqseq0++; // теперь на второйres0 = res; // указатель res0 указывает на самый первый элемент массива resres0 += 5; // теперь на шестойx = **seq0; // считывание второго элемента двумерного массива (двойное разыменование - указателя на массив указателей и затем указателя на числа)y = *res0; // считывание шестого элемента одномерного массива (разыменование указателя на массив чисел)