最近, 需要对数组去重, 当然排序后再顺序去重,是很自然的想法, 但是输出数组并不要求排序, 所以想写一个简单的算法。这个算法并不开新的空间,就是在原数组上进行。看代码吧,我的是delphi。 var A: Array of Integer; I,J,C,K, P: Integer; begin C:=10; SetLength(A,10); A[0]:=1; A[1]:=4; A[2]:=2; A[3]:=6; A[4]:=3; A[5]:=4; A[6]:=3; A[7]:=4; A[8]:=4; A[9]:=4; //for I := 0 to C-1 do memo2.Lines.Add(IntTostr(A[i])); for I := 0 to C-1 do begin for J := I+1 to C-1 do if A[I]=A[J] then begin for K := C-1 Downto J do if A[J]<>A[k] then begin P:=A[K]; A[K]:=0; A[J]:=P; C:=K; break; end else begin A[K]:=0; C:=K; end; end; end; Setlength(A,C); //memo2.Lines.Add('--------------'); // for I := 0 to high(A) do memo2.Lines.Add(IntTostr(A[i])); end;