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

数组实现

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;
		}
	}		
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值