Q&A

  • 배열 sort
ARec 라고 하는스트링형 배열이 있습니다.

ARec 내용아래와 같습니다.  --------    정렬후에는 아래처럼 되야 하거든요..
-----------------------                         -------------
A |A|C|C|B|E|F|A|E    =정렬후 ==>  A|B|C|E|F
-----------------------                         -------------
될려고 하다가 머리가 뻐근 해지고,,,,한대 피고나면 다시 첨이고,,,에 휴...


다시 말해서.
이벤트가 발생하면
중복되는 알파벳은 하나로 보고, 크기순서대로 재배열 되도록 하고자 합니다.

상상력 결핍으로 잘 해결되지 않습니다.

여러 고수님들 작은 힌트라도 저의 결핍된 상상력에 큰도움이 될 수 있습니다.
매마른 상상력에 한방울 청량제를 뿌려주세요...

꾸벅 꾸벅 꾸벅...
2  COMMENTS
  • Profile
    Crazy™ 2005.04.20 07:54
    서접에 가시면 자료구조란 책이 많이 돌아댕깁니다.
    그 책엔 퀵소트, 버블소트, 셀, 머지 등등등..소트구현하는 로직이 여러방법이 있습니다.
    한번쯤 보시면 많은 도움이 될 듯 하네요.

  • Profile
    김병윤 2005.04.19 03:03
    sort 그까이거 대~충....아래처럼 하면 안될까요? ^^


    <!--CodeS-->
    var
      data : array[1..9] of string = ('A','A','C','C','B','E','F','A','E');

    procedure TForm1.Button1Click(Sender: TObject);
    var
      i, j : Integer;
      s : String;
      ARec : array[1..9] of string;
    begin
      Sort(1,8); // 먼저 배열을 정렬 시키시고...

      j := 1;
      for i := 1 to 9 do // 루프를 돌리면서...같은 값을 빼보죠...
      begin
        IF data[i] <> s Then // 앞에 읽은 배열값과 같은 값이 아니면 배열에 넣쿠...아님 말구..^^;;
        Begin
          ARec[j] := data[i];
          inc(j);
        End;
        s := data[i]; // 지금의 배열값을 s에 기억해두시고....
      end;
    end;

    // 빠른정렬(Quick Sort)
    procedure TForm1.Sort(l, r: Integer);
    var
      i, j: integer;
      x, y: String;
    begin
      i := l;
      j := r;
      x := data[(l+r) DIV 2];
      repeat
        while data[i] < x do i := i + 1;
        while x < data[j] do j := j - 1;
        if i <= j then
        begin
          y := data[i];
          data[i] := data[j];
          data[j] := y;
          i := i + 1;
          j := j - 1;
        end;
      until i > j;
        if i < r then Sort(i, r);
        if l < j then Sort(l, j);
    end;
    <!--CodeE-->

    담배 넘 많이 피시지 마시구요....즐코하세요 ^^