首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >双向链表的分区排序

双向链表的分区排序
EN

Stack Overflow用户
提问于 2018-06-02 05:18:26
回答 2查看 258关注 0票数 2

从Wirth的书翻译成C的代码如下

代码语言:javascript
运行
复制
void quicksort(int *array, int left, int right)
{
    int v=array[(left+right)/2];
    int i,j,x;
    i=left;
    j=right;
    do {
        while (array[i]<v) i++;
        while (array[j]>v) j--;
        if (i<=j) {
            x=array[i];
            array[i]=array[j];
            array[j]=x;
            i++;
            j--;
        }
    } while (i<=j);
    if (j>left) quicksort(array, left, j);
    if (i<right) quicksort(array, i, right);
}

但这使用了数组-我在双向链表(node structure here )上的尝试:

代码语言:javascript
运行
复制
void partitonSort(node **head,node **tail)
{
    node *v; // here I want to use first or last element as pivot
    node *i,*j;
    do
    {
        while(i->key < v->key) i = i->next;
        while(j->key > v->key) j = j->prev;
        if(/*what boolean expression should I use here*/)
        {
            /*Is it necessary to replace swap operation 
              with insert and delete operations and 
              how to do it */
            i = i->next;
            j = j->prev;
        }
    }
    while(/*what boolean expression should I use here*/);
    if(/*what boolean expression should I use here*/)
           partitonSort(head,&j);
    if(/*what boolean expression should I use here*/)
           partitonSort(&i,tail);      
}

我在代码注释中留下了问题:

我是否应该将交换操作替换为插入和删除操作

我应该使用的布尔表达式以及如何使用thisWhat 

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50651103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档