--------------------------------------Selection Sort----------------------------------
public void selectionSort(){
link min=first;
link previousMin=first;
link prev2=first,prev1=first;
for(link curr1 = first; curr1.next!=null;curr1=curr1.next){
min=curr1;
for(link curr2 = curr1 ; curr2!=null;curr2= curr2.next){
if(min.data>curr2.data){
min=curr2;
previousMin=prev2;
}
prev2=curr2;
}
if(min==curr1){
prev1=curr1;
}
else if(min==curr1.next){
if(curr1==first)
first=min;
prev1.next=min;
curr1.next=min.next;
min.next=curr1;
curr1=min;
prev1=min;
}
else{
link temp=curr1.next;
if(curr1!=first)
prev1.next=min;
else
first=min;
curr1.next=min.next;
min.next=temp;
previousMin.next=curr1;
prev1=min;
curr1=min;
}
}
}
-----------------------------------Insertion Sort-------------------------------
public void insertionSort(){//by pointer
link curr2;
link prev2=first,prev1=first;
link curr1=first;
while(curr1.next!=null){
curr2=curr1.next;
while(curr2!=null&&curr2.data>=curr1.data){
prev2=curr2;
curr2=curr2.next;
}
if(curr2==null){
prev1=curr1;
curr1=curr1.next;
}
else if(curr2==curr1.next){
if(curr1==first)
first=curr2;
else
prev1.next=curr2;
curr1.next=curr2.next;
curr2.next=curr1;
curr1=curr2;
}
else{
if(curr1!=first)
prev1.next=curr2;
else
first=curr2;
prev2.next=curr2.next;
curr2.next=curr1;
curr1=curr2;
}
}
}
public void selectionSort(){
link min=first;
link previousMin=first;
link prev2=first,prev1=first;
for(link curr1 = first; curr1.next!=null;curr1=curr1.next){
min=curr1;
for(link curr2 = curr1 ; curr2!=null;curr2= curr2.next){
if(min.data>curr2.data){
min=curr2;
previousMin=prev2;
}
prev2=curr2;
}
if(min==curr1){
prev1=curr1;
}
else if(min==curr1.next){
if(curr1==first)
first=min;
prev1.next=min;
curr1.next=min.next;
min.next=curr1;
curr1=min;
prev1=min;
}
else{
link temp=curr1.next;
if(curr1!=first)
prev1.next=min;
else
first=min;
curr1.next=min.next;
min.next=temp;
previousMin.next=curr1;
prev1=min;
curr1=min;
}
}
}
-----------------------------------Insertion Sort-------------------------------
public void insertionSort(){//by pointer
link curr2;
link prev2=first,prev1=first;
link curr1=first;
while(curr1.next!=null){
curr2=curr1.next;
while(curr2!=null&&curr2.data>=curr1.data){
prev2=curr2;
curr2=curr2.next;
}
if(curr2==null){
prev1=curr1;
curr1=curr1.next;
}
else if(curr2==curr1.next){
if(curr1==first)
first=curr2;
else
prev1.next=curr2;
curr1.next=curr2.next;
curr2.next=curr1;
curr1=curr2;
}
else{
if(curr1!=first)
prev1.next=curr2;
else
first=curr2;
prev2.next=curr2.next;
curr2.next=curr1;
curr1=curr2;
}
}
}
Komentar
Posting Komentar