이진 탐색1.입력값입력값은 정해진 값이 아니라 제가 소스 안에서 자체적으로 1부터100까지의 수중랜덤으로 아무 숫자나 10개정도 추출하여 배열에 집어 넣습니다.즉 이러한 형식으로 제가 결과 값을 일부러 유도 할 수는 없게 하였습니다.static int num[]=new int[10]; e){System.out.println("찾을수가 없습니다. !!!");return ;}if(num[mid] > key) {System.out.println("중간값의 위치는" + (mid+1) +"입니다.");search(key, s, mid-1);} else if(num[mid] < key) {System.out.println("중간값의 위치는" + (mid+1) +"입니다.");search(key, mid+1, e);} else if(num[mid] == key) {System.out.println("왼쪽에서 오른쪽으로" + (mid+1) + "번째에 있습니다. !!!!");System.out.println("검색한 값은 "+num[mid] +"입니다.");}}위의 소스는 이진 검색 메소드입니다.while ( (str2 =br.readLine()) != null){if (str2.equalsIgnoreCase("q")) break;search(Integer.parseInt(str2), 0, num.length-1); //검색 호출System.out.println("검색정수를 입력하세요");}}메인에서 위의 소스를 이용하여 검색 메소드를 호출하여키라는 변수에 검색하려는 정수를 입력후중간값과 비교하여 중간값이 키 값보다 클을 경우 원하는 정수는 중간값 위치에서왼쪽에 있다는 말이므로 왼쪽에서 다시 중간값을 구하여서 그 중간값과 키 값을 다시 비교하여 중간값과 키 값이 같아질때 까지 반복을 합니다.중간값이 키 값보다 작을 경우도 위와 마찬가지이지만 다른점은 오른쪽에 키 값이 위치한다는 이야기이므로 오른쪽에서 작업을 반복합니다.옆의 그림과 같이 3이라는 정수를검색하려구 입력 하였을때 중간값의위치 5에 있는 48보다 작으므로 왼쪽에서 다시 중간값의 위치2에 있는 28보다 작기 때문에 다시 돌리고 이러한형식으로 더 이상 중간값을 구할수 없을 때 까지 돌린 후 없다면찾을수가 없습니다.라는 문장이 그림과 같이 출력합니다.옆의 그림은 결과 값을 출력한 것으로써 60이라는 정수를 찾았을때중간값 위치5에 있는 48보다 크므로오른쪽에서 검색하고 다시 중간값을구하였을때 구하는 값이 중간값과같으므로 원하는 값의 위치와 함께검색한 값은 60입니다 라는 문장을출력하였습니다.왼쪽에서 값을 구할 경우입니다.해쉬 검색1.입력값입력값은 위의 이진 검색과 동일하며 랜덤형식으로 1부터 99까지 아무 값이나 10개를추출하게 되어있습니다.2.입력값 정리입력값을 가지고 일의 자리수에 맞추어 각각의 자리수의 집합을 만들었습니다.static int num[][]=new int[10][10];static int num2[]=new int[10];static int num3[]=new int[10];static int xmp =0;static int xmp1 = 0;위의 소스중 num은 다차원 배열로서 앞은 자리수 0부터 9까지 키 값을 가지게 됩니다.그리고 뒤는 10까지 빈 배열의 공간을 가지고 나중에 주어지는 값을 여기에 저장하게 됩니다.num2는 임의의 값 10개가 들어갈 저장 장소입니다. 즉 위의 이진 탐색에서 num과 같은역할을 하게 되는 것입니다.num3는 0부터 9까지 값을 가지고 num2와 나중에 들어오는 검색할 정수의 일의 자리수와 비교하여 num의 배열에 각각의 위치에 저장하게 해주기 위한 배열입니다.또한 xmp와 xmp1은 나중에 결과 값을 넣기 위한 변수입니다.for (int i=0;i
스크롤바와 세이프를 이용한 그래픽 뷰 프로그램 이프로그램은 dir리스트 박스,File리스트 박스,드라이브리스트박스,콤보박스,스크롤바,세이프,이미지를 이용한 프로그램입니다실행전에는 이미지가 실선으로 보이나 실행후에는 보이지 않고 세이프만 보입니다.세이프는 스크롤바에 의해 이동이 가능합니다. 또한 읽을수 없는 파일(이미지파일이 아닌 파일)을 선택하였을 경우 오류창이 뜨게되어있습니다.이미지 출력후 이미지파일이 픽쳐박스보다 클 경우 스크롤바를 사용하여 이미지의보이지 않는 부분까지 볼수 있으며 이미지가 픽쳐박스보다 작을경우에는 스크롤바를사용하지 못하게 하였습니다. 마지막으로 콤보박스를 사용하여 이미지 파일을 종류별로 간단히 찾을수 있게 하였습니다.다음은 소스 코드입니다.Private Sub Combo1_Click()' 콤보박스에서 선택하면 그에 따른 패턴을 변경한다.Select Case Combo1.ListIndexCase 0:File1.Pattern = "*.BMP;*.DIB;*.GIF;*.JPG;*.WMF;*.EMF;*.ICO;*CUR"Case 1:File1.Pattern = "*.BMP;*.DIB"Case 2:File1.Pattern = "*.GIF"Case 3:File1.Pattern = "*.JPG"Case 4:File1.Pattern = "*.WMF;*EMF"Case 5:File1.Pattern = "*.ICO;*.CUR"Case 6:File1.Pattern = "*.*"End SelectEnd SubPrivate Sub Command1_Click()' 프로그램을 종료한다.EndEnd SubPrivate Sub Dir1_Change()' 디렉토리 패스와 파일의 패스를 동일하게 한다.File1.Path = Dir1.PathEnd SubPrivate Sub Drive1_Change()On Error GoTo ERR' 드라이브와 패스를 동일하게 한다.Dir1.Path = Drive1.DriveExit Sub' 드라이브를 정상적으로 읽지 못하면 수행한다.ERR:MsgBox "드라이브정보를 읽을 수 없습니다."End SubPrivate Sub File1_Click()Dim Dir_File As StringOn Error GoTo ERRDim ADim BDim CC = File1.Path & "" & File1.FileName ' 패스와 파일명을 붙여준다.Image1.Picture = LoadPicture(C) '그림을 가져온다.A = Image1.Width - Picture1.ScaleWidth'그림이 큰 경우에만 스크롤바를 보이게 한다.If A > 0 ThenHScroll1.Max = AHScroll1.LargeChange = HScroll1.Max / 10HScroll1.SmallChange = HScroll1.Max / 20HScroll1.Enabled = TrueElseHScroll1.Enabled = FalseEnd IfB = Image1.Height - Picture1.ScaleHeight'그림이 큰 경우에만 스크롤바를 보이게 한다.If B > 0 ThenVScroll1.Max = BVScroll1.LargeChange = HScroll1.Max / 10VScroll1.SmallChange = HScroll1.Max / 20VScroll1.Enabled = TrueElseVScroll1.Enabled = FalseEnd IfPicture1.Picture = LoadPicture()Call PaintpicExit Sub' 그림을 정상적으로 읽지 못하면 수행한다.ERR:MsgBox "읽을 수 없는 파일 입니다."End SubPublic Sub Paintpic()On Error GoTo ErrHandlerPicture1.PaintPicture Image1.Picture, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, HScroll1.Value, VScroll1.Value, Picture1.ScaleWidth, Picture1.ScaleHeightErrHandler:End SubPrivate Sub Form_Load()' 폼이 화면 중심에 출력한다.Left = (Screen.Width - Width) / 2Top = (Screen.Height - Height) / 2' 이미지 크기를 설정한다.Picture1.Height = 3645Picture1.Width = 3615Picture1.AutoSize = FalseHScroll1.Max = Picture1.HeightVScroll1.Max = Picture1.Width' 콤보박스에 리스트를 넣는다.Combo1.Text = "모든그림파일"Combo1.AddItem ("모든그림파일")Combo1.AddItem ("비트맵(*.BMP;*.DIB)")Combo1.AddItem ("GIF이미지(*.GIF)")Combo1.AddItem ("JPEG이미지(*.JPG)")