您的位置:首页 > 编程语言 > Java开发

快速排序 Java实现-数组-链表

2016-04-05 14:59 399 查看
数组实现

public static void quicksort(int[] a,int l,int r){
if(l<r){
int i=l,j=r;
int temp=a[i];
while(i<j){
while(i<j && a[j]>=temp){
j--;
}
if(i<j){
a[i++]=a[j];
}
while(i<j && a[i]<temp){
i++;
}
if(i<j){
a[j--]=a[i];
}
}
a[i]=temp;
quicksort(a,l,i-1);
quicksort(a,i+1,r);
}
}
public static void main(String[] args) {
int[] a={1,2,3,1,2,44,24324,43,24,754,145};
quicksort(a,0,a.length-1);
for(int i:a){
System.out.print(i+" ");
}
}

链表实现

public class Node {

int val;
Node next;

public static void quicksort(Node begin,Node end){
if(begin!=end){
Node partition=getpartition(begin,end);
quicksort(begin,partition);
quicksort(partition.next,end);
}

}
public static Node getpartition(Node begin,Node end){
int val=begin.val;
Node p=begin;
Node q=p.next;
int temp;
while(q!=end){
if(q.val<val){
p=p.next;
temp=p.val;
p.val=q.val;
q.val=temp;
}
q=q.next;
}
begin.val=p.val;
p.val=val;
return p;
}
public static void main(String[] args) {
Node a1=new Node();
Node a2=new Node();
Node a3=new Node();
Node a4=new Node();
Node a5=new Node();
Node a6=new Node();
Node a7=new Node();
Node a8=new Node();
a1.val=1; a1.next=a2;
a2.val=3; a2.next=a3;
a3.val=94;a3.next=a4;
a4.val=2; a4.next=a5;
a5.val=5; a5.next=a6;
a6.val=764;a6.next=a7;
a7.val=-23;a7.next=a8;
a8.val=9;a8.next=null;
quicksort(a1,null);
Node temp=a1;
while(temp!=null){
System.out.print(temp.val+" ");
temp=temp.next;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: