Skip to content

Instantly share code, notes, and snippets.

@lmasikl
Created May 26, 2015 18:27
Show Gist options
  • Save lmasikl/b6f1f2c16f6064fb0f24 to your computer and use it in GitHub Desktop.
Save lmasikl/b6f1f2c16f6064fb0f24 to your computer and use it in GitHub Desktop.
public void noDups(){
int in, out;
for (in=0; in < nElems-1; in++){
long temp = a[in];
out = in;
while (out < nElems-1 && a[out+1]==temp){
// До тех пор пока не конец массива или следующий элемент равен текущему
// Заполняем "пустым" значением
a[out]=-1;
++out;
}
}
for (out = 1; out < nElems; out++){
long temp = a[out];
in = out;
while (in > 0 && a[in-1] >= temp){
// До тех пор пока индекс больше нуля или предыдущий меньше с текущим индексом
// смещаем массив вправо, так понимаю что перемещаешь "пустые" значения в начало
a[in] = a[in-1];
--in;
}
a[in] = temp;
}
out = 0;
for (in = 0; in < nElems-1; in++) {
// Считаем кол-во "пустых" значений
if(a[in]==-1)
out++;
}
for (int i = 0; i < out ; i++) {
long temp = a[out];
for (int j = 0; j < nElems-1; j++) {
// Смещаем массив влево, так понимаю затирая "пустые значения"
a[j]=a[j+1];
}
nElems--;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment