快速排序(数组和单链表)

博客主要介绍了数组和单链表的快速排序。对于单链表的快速排序,提到了遍历交换数据的方法,还指出应该可以通过交换节点来实现排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数组的快速排序

 

 

二、单链表的快速排序

1.遍历交换数据

void quicksort(Linklist head, Linklist end){  
    if(head == NULL || head == end)             //如果头指针为空或者链表为空,直接返回  
        return ;  
    int t;
    //1.将head作为作为枢轴,small用来记录比枢轴小的值 
    Linklist p = head -> next;                  //用来遍历的指针  
    Linklist small = head;  
    while( p != end){  
        if( p -> data < head -> data){      //对于小于轴的元素放在左边  
            small = small -> next;  
            t = small -> data;  
            small -> data = p -> data;  
            p -> data = t;  
        }  
        p = p -> next;  
    }
  
    //2、将枢轴与最后一个比枢轴小的数交换,这样枢轴左边的数都比枢轴小了
    t = head -> data;                           //遍历完后,对左轴元素与small指向的元素交换  
    head -> data = small -> data;  
    small -> data = t;
  
    quicksort(head, small);                     //对左右进行递归  
    quicksort(small -> next, end);  
}  

 

2、应该可以交换节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值