/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
//* Definition for singly-linked list.
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=new Random().nextInt(end-start+1)+start;
// ListNode temp=nodeArray[middle];
int i=start;
int j=end;
int blank=start;
ListNode temp=nodeArray[blank];
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) {
if(head==null)
{
return 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;
}
}
}
快速排序
最新推荐文章于 2024-01-19 17:50:40 发布
58万+

被折叠的 条评论
为什么被折叠?



