/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
//* Definition for singly-linked list.
import java.util.ArrayList;
import java.util.Random;
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
class ReverseListNode{
int val;
ReverseListNode previous;
ReverseListNode(ListNode listNode)
{
val=listNode.val;
}
}
public class Solution {
public void sort(int start,int end, ListNode [] nodeArray)
{
if(end-start<=0)
{
return;
}
else
{
int middle=partition(start,end,nodeArray);
sort(start,middle,nodeArray);
sort(middle+1,end,nodeArray);
}
}
public int partition(int start,int end, ListNode [] nodeArray)
{
// int middle=
// ListNode temp=nodeArray[middle];
int i=start;
int j=end;
int blank=new Random().nextInt(end-start+1)+start;
ListNode temp=nodeArray[blank];//随机选择一个值作为中间值
nodeArray[blank]=nodeArray[start];
blank=start;
while(i!=j)
{
while(i!=j&&nodeArray[j].val>=temp.val)
{
j--;
}
if(i!=j&&nodeArray[j].val<temp.val)
{
nodeArray[blank]=nodeArray[j];
blank=j;
i++;
}
while(i!=j&&nodeArray[i].val<=temp.val)
{
i++;
}
if(i!=j&&nodeArray[i].val>temp.val)
{
nodeArray[blank]=nodeArray[i];
blank=i;
j--;
}
}
nodeArray[i]=temp;
return i;
}
public ListNode sortList(ListNode head) {
ArrayList<ListNode> arr=new ArrayList<ListNode>();
while(head!=null)
{
arr.add(head);
head=head.next;
}
ListNode [] nodeArray=new ListNode[arr.size()];
nodeArray=arr.toArray(nodeArray);
sort(0,nodeArray.length-1,nodeArray);
for(int i=0;i<nodeArray.length-1;i++)
{
nodeArray[i].next=nodeArray[i+1];
}
nodeArray[nodeArray.length-1].next=null;
return nodeArray[0];
}
public static void main(String[] args) {
Solution solution=new Solution();
ListNode listNode4=new ListNode(4);
ListNode listNode3=new ListNode(3);
ListNode listNode2=new ListNode(2);
ListNode listNode1=new ListNode(1);
listNode4.next=listNode3;
listNode3.next=listNode2;
listNode2.next=listNode1;
ListNode listNode=solution.sortList(listNode4);
while(listNode!=null)
{
System.out.println(listNode.val);
listNode=listNode.next;
}
}
}
快速排序改进
最新推荐文章于 2018-07-30 00:02:48 发布