창조유저그룹-커즈닷컴
Window close
ID :     PASS :   
   
  처음으로
  창조
  창조 소개
창조 다운로드
CUGz.com 소개
온라인 도움말
  커뮤니티
  가입인사
자유게시판
Q/A게시판
TIP/TECH
열린강좌
자주하는질문
아이디어게시판
  자료실
  소스자료실
프로그램자료실
기타자료실
명예의 전당
이미지 자료실
  지원/기타
  표준용어재정
구글 웹서치  
관리자 전용


질문게시판
- 반드시 검색을 하신 후 원하는 답변을 찾을 수 없을 때, 질문을 올려주세요.


LIST ALL
Posted by 김환욱2004-06-28 12:30:14, Hit : 3944
외국인이 작성한 버블정렬 소스
Post URL : http://cugz.sjworks.net/bbs/zboard.php?id=qna&no=820
아래 비베 소스 인데요
이게 그 문제의 1000개의 아이템을 0.05초만에 정렬해버리는 소스 입니다.
아래 소스로 배열변수의 값을 정렬하고 리스트박스에 뿌려주는 형식이더군요..
리스트박스에 뿌려주는 소스는 필요가 없기때문에 이 게시물에 포함시키지 않고
배열변수의 정렬부분만 복사해서 붙여넣기 했습니다.
제가 2시간동안 창조로 이리저리 해봤는데 배열의 범위를 벗어났습니다
이런 틱틱대는 소리만 해대고 안되네요 ㅡㅡ;
컴파일까지는 성공했는데 반복문이 무한 루프에 빠져서 프로그램이 먹통되고 -_-;;
소스가 간단한거 같은데 이상하게 안되네요 ㅜ.ㅜ
외국인이 주석도 표시해 놨는데 주석때문에 햇갈리지 마세요^^
제가 구현한 버블정렬 소스는 무식해서 느린가봅니다.. -_-;

Public Sub Bubblesort(List() As Long, ByVal min As Long, ByVal max As Long)
Dim last_swap As Long
Dim i As Long
Dim j As Long
Dim tmp As Long
    
    ' Repeat until we are done.
    Do While min < max
        ' Bubble up.
        last_swap = min - 1
        ' For i = min + 1 To max
        i = min + 1
        Do While i <= max
            ' Find a bubble.
            If List(i - 1) > List(i) Then
                ' See where to drop the bubble.
                tmp = List(i - 1)
                j = i
                Do
                    List(j - 1) = List(j)
                    j = j + 1
                    If j > max Then Exit Do
                Loop While List(j) < tmp
                List(j - 1) = tmp
                last_swap = j - 1
                i = j + 1
            Else
                i = i + 1
            End If
        Loop
        ' Update max.
        max = last_swap - 1
        
      
       ' Bubble down.
        last_swap = max + 1
        ' For i = max - 1 To min Step -1
        i = max - 1
        Do While i >= min
            ' Find a bubble.
            If List(i + 1) < List(i) Then
                ' See where to drop the bubble.
                tmp = List(i + 1)
                j = i
                Do
                    List(j + 1) = List(j)
                    j = j - 1
                    If j < min Then Exit Do
                Loop While List(j) > tmp
                List(j + 1) = tmp
                last_swap = j + 1
                i = j - 1
            Else
                i = i - 1
            End If
        Loop
        ' Update min.
        min = last_swap + 1
    Loop
End Sub

최재일   2004-06-28 PM 2:34:05  
헐~ 1000개를 0.05초만에 정렬하다니..
비베의 반복문이 훨씬 빨라서 그러는거 아닐까요??
암튼 함 분석해보져..
ps.이진백   2004-06-28 PM 3:04:11  
대강 뭔소린지는 알았는데...
적용하기 무지 귀찮음.
ps.이진백   2004-06-28 PM 3:04:52  
(환욱님 지금 1점차로 위자드님 추격 중)
김환욱   2004-06-28 PM 3:08:58  
켁 -_-; 1점.... 이거 금방 금방 오르는데요?
김정엽[닷넷]   2004-06-28 PM 8:49:20  
버블 정렬은 정렬 알고리즘중 최악의 알고리즘일건데..
버블 정렬인가..
-_-;;; 0.05초... 라면...
이거 버블 맞는지 ;ㅁ;
적어도 삽입 정렬은 안될까요..?
더 나아가 분할 정렬이라던지..
;;
최재일   2004-06-29 AM 1:30:58  
저거 비베소스 분석해보니.. 내림차순과 오름차순 두개의 명령어군요..
글구, 김환욱님이 소스자료실에 올리신 버블정렬과는 정렬방식이 다소 다른데요.. 좀 특이한 방법이라구 할까낭??
아무래도 정렬속도가 더 빠를듯 싶습니다.. 암툰 완성해서 소스올려보져..
김환욱   2004-06-29 AM 7:54:52  
네.. 오름차순과 내림차순으로 두개가 되어 있더라구요..
버블정렬 기본 알고리즘을 변형시켜서 알고리즘의 원리가 이해가 안되서 그냥 똑같이 따라 할려니 햇갈려서 못하겠어요..^^ 이게 아주 효율적으로 정렬이 되는것 같아요.. 쓸데 없는데서 시간 안끌고...
김환욱   2004-06-29 AM 7:55:39  
좀 의아 한게.. 오른차순과 내림차순이 따로 되어 있는게 아니고 한 프로시저 안에 저렇게 있다는게 좀 이상하고 그것때문에 더 햇갈리네요^^
최재일   2004-06-29 PM 6:31:11  
김환욱님이 올리신 퀵버블정렬 소스는
처음줄부터 차차 비교해서 큰값을 맨 뒤로 보내는 방식을 반복해서 전체줄을 한번 반복할때마다 맨 뒤값을 하나씩 값 비교검사에서 제외시키는 방식이자나요..
그런데 저거 비베소스는 작은값은 맨 앞으로, 큰값을 맨 뒤로 보내서
전체줄을 반복할때마다 맨 앞의 값과 맨 뒤의 값을 제외시키는 방식인거 같더라구여..
그래서 아무래도 더 빠르겠죠??
빠른시일내에 소스 올리지요.. 요새 괜히 바뻐서 전혀 손도 못데구 잇네요.. ㅡㅡ;
김환욱   2004-06-29 PM 6:57:49  
헉.. 버블정렬에다가 퀵정렬을 합쳤나... 퀵정렬 알고리즘과 비슷하네요...
지상현   2010-06-27 AM 3:42:05  
원래 버블정렬은 한쪽으로 모는건데 이건 양쪽으로 모는 것 같네요.
LIST ALL               GO TO THE TOP


N
Category
   Subject
Posted by
Date
H
1333 창조
   요청이요.........? [11]
『이경석』 2005/10/22  2889
1332 기타
   요즘 자동로그인은 대부분 잘 안되는듯 합니... [4]
김길남 2006/12/28  3771
1331 창조
   요즘 그래픽 관련해서 놀고 있는데요; [5]
성인e 2009/03/21  3162
1330 창조
   외부프로그램 실행... [7]
정도연 2006/03/25  2896
창조
   외국인이 작성한 버블정렬 소스 [11]
김환욱 2004/06/28  3944
1328 기타
   왜!왜!왜 그렇죠??? [1]
위자드 2003/02/28  2752
1327 기타
   왜 모든 게시판들이 2페이지로 넘기면 안넘어... [4]
짱아 2007/11/17  3274
1326 창조
   왜 결과가 나오지 않는지..... [2]
위자드 2003/03/03  2743
1325 창조
   왕초보에요...도와주세요.. [3]
김훈 2005/10/09  2024
1324 창조
   왕초보 질문요~ [7]
청송 2004/12/29  2960
1323 창조
   왕초보 질문 ㅠ.ㅠ [2]
강성빈 2004/02/29  2315
1322 창조
   완전쌩초보 질문입니다. [2]
개새물고기 2006/07/16  2465
1321 창조
   완전 초보가 질문요.. [4]
이명찬 2008/02/27  3338
1320 기타
   온라인상의 파일 다운로드시 진행상황 표시하... [6]
최재일[20JI] 2004/05/21  3859
1319 창조
   온라인 게임도 만들 수 있을까요? [4]
피피 2007/10/14  3266
1318 창조
   오토클릭을 만드는 중인데... [4]
우유중독 2006/07/30  2653
1317 기타
   오토 매크로 만들기 (Beta로) [5]
마이네도 2007/01/06  3026
1316 창조
   오름차순 정렬에 관한 반복문... [5]
mh2mh 2003/04/21  3287
1315 창조
   오류메세지 어떻게 하져?
정윤부 2002/10/23  3311
1314 창조
   오류때문입니다.. [3]
유효근 2003/01/09  3186
1313 창조
   오류가 뜹니다.. [2]
이정재 2007/10/07  2934
1312 창조
   오류 좀 찾아주세요 [2]
차준호 2007/12/12  3639
1311 창조
   오랫만에 질문~ [2]
위자드 2003/04/23  3170
1310 창조
   오랫만에 와서 질문부터 하네요.;; [1]
바람 2011/02/01  4322
1309 창조
   오랜만에 질문좀 올립니다. [2]
만물 2008/10/25  2955
LIST ALL   Prev [1]..[31][32][33] 34 [35][36][37][38][39][40]..[87] Next
Copyright 1999-2024 Zeroboard / skin by reedyfox in miniwini style
로그인
지우개 Expert 3.0
제작자 : 천호성 님 [LINK]
로그인
대박로또2005
제작자 : 최재일 님 [LINK]
로그인
1박종훈15292 점
2지상현8809 점
3손상진7388 점
4권선중6060 점
5이진백5174 점
로그인
가입일닉네임
05/31김동률
03/31홍형기
09/01o00pp99oo
12/27이재민
11/20이희철
로그인