2014년 7월 30일 수요일

링크드리스트를 이용한 자바 삽입정렬(Insertion sort Example) [자바개발자교육/자바교육/자바강좌/자바,Spring교육잘하는곳/자바,spring교육추천/자바실무교육/JAVA/JAVA교육/JAVA스프링학원/JAVA실무교육]

// InsertionSort.java 
class SNode {
 public String key;
 public Object obj;
 public SNode next;
 public SNode (String key) {this(key, null, null);}
 public SNode (String key, Object obj) {this(key, obj, null);}
 public SNode (String key, Object obj, SNode next) {
  this.key = key;this.obj = obj;this.next = next;
 }
 public int compareTo(SNode node) {
  if (key.compareTo(node.key)<0) return -1;
  else if (key.compareTo(node.key)==0) return 0;
  else return 1;
 }
}
class Person {
 String name;
 String tel;
 Person(String name, String tel) {
  this.name = name;
  this.tel = tel;
 }
}
public class InsertionSort {
   static SNode insertionSort(SNode head) {  
      SNode end;
      SNode q;              //삽입되는 카드 1장....(새로 위치를 찾을 데이터를 가리킴)
      SNode prev;         //삽입되는 위치의 앞, 뒤 포인터
      end = head;
      while(end.next!= null) {
 q = end.next;  //새로 비교되는 대상

 //다음것이 작은 경우...위치를 바꾸자
 if (q.compareTo(head)<0){  //새로 비교되는 대상이 head 보다 작은 경우
  //head와 다음 노드의 순서를 바꾼다...
  end.next = q.next;
  q.next = head;
  head = q;
 }
 else {
  prev = head;
  //새로 추가되는 q가 큰 동안에 수행
  //즉 삽입될 위치를 찾음....
  while(q.compareTo(prev.next) > 0) {
   prev =  prev.next;
 }

 //마지막가지 비교한 결과 자기(q)보다 큰것이 없는 경우
 //q를 마지막으로
 if (q == prev.next) end = q;      
 else {  //삽입될 위치를 찾은 경우 prev 뒤에 q를 삽입
  //q가 가운데 들어가므로 q.next를 보관
  end.next = q.next;   q.next = prev.next; prev.next = q;
 }
          } //end of if
       }//end of while
       return head;
 }
 public static void main(String[] args) {
   SNode node1 = new SNode("바길동", new Person("바길동","666-6666"), null);
   SNode node2 = new SNode("라길동", new Person("라길동","444-4444"), null);

SNode node3 = new SNode("마길동", new Person("마길동","555-5555"), null);
SNode node4 = new SNode("가길동", new Person("가길동","111-1111"), null);
SNode node5 = new SNode("나길동", new Person("나길동","222-2222"), null);
SNode node6 = new SNode("다길동", new Person("다길동","333-3333"), null);
node1.next = node2;  node2.next = node3;
node3.next = node4;  node4.next = node5;
node5.next = node6;
SNode head = insertionSort(node1);
while(head != null) {
 System.out.println(((Person)(head.obj)).name + "::" + ((Person)(head.obj)).tel);
 head = head.next;

}
}



평일주간[100%환급과정]
(8/04)C#4.0,WinForm,ADO.NET
(8/04)자바기초JDBC,Servlet/JSP까지
(8/04)Spring,MyBatis,Hibernate실무과정
(8/11)PL/SQL,ORACLE HINT,TUNING
(8/11)SQL기초에서 Schema Object까지
(8/11)안드로이드개발자과정
(8/11)채용예정교육
평일야간[개인80%환급]
(8/04)웹퍼블리싱 마스터
(8/05)JSP,jQUERY,Spring,MyBatis
(8/06)Spring3.X, MyBatis, Hibernate
(8/08)C#,Network,ADO.NET,ASP.NET
(8/11)SQL기초에서실무까지
(8/11)안드로이드개발자과정
(8/28)자바JSP,jQuery,Spring,MyBatis
주말주간[개인80%환급]
(8/02)Spring3.X, MyBatis, Hibernate
(8/02)C#,ASP.NET마스터
(8/02)웹퍼블리싱 마스터
(8/02)SQL초보에서 Schema Object까지
(8/09)SQL기초에서실무까지
(8/09)안드로이드개발자과정
(8/09)자바JSP,Ajax,jQuery,Spring,MyBatis
(8/23)JAVA,Network&WEB&Framework
주말야간[개인80%환급](18:30~22:20)
(8/02)JAVA,Network&WEB&Framework
(8/09)SQL기초에서실무까지

댓글 없음:

댓글 쓰기