首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速排序算法代码

快速排序算法代码
EN

Stack Overflow用户
提问于 2015-02-25 23:32:36
回答 1查看 96关注 0票数 0

我正在尝试实现一种快速排序,根据数字值对数字和单词进行排序。我似乎不知道如何修复下面的代码才能正常工作。

代码语言:javascript
复制
 if (high!=low&& high>low)//compares hashes and finds the number in the middle. swaps hashes and corresponding words
{

long one=hash[low];
long two=hash[high];
long three = hash[high/2];
    if((one<=two&&one>=three)||(one<=three&&one>=two))
    {
        swap(hash[low], hash[high]);
        swap(copyOfWords[low], copyOfWords[high]);
    }
    else if((three<=one&&three>=two)||(three<=two&&three>=one))
    {

        swap(hash[high/2], hash[high]);
        swap(copyOfWords[high/2], copyOfWords[high]);
    }
    else
    {

    }
    int i=low;
    int j=high-1;
    while(i!=j&&i<j)
    {

        while(hash[i]<hash[high]&&i<j)// find higher numbers and lower numbers then the middlle and swaps them
        {
            i++;
        }
        while(hash[j]>hash[high]&&i<j)
        {
            j--;
        }
        if(i==j||i>j)
        {
        }
        else
        {
            swap(hash[i],hash[j]);
            swap(copyOfWords[i],copyOfWords[j]);
            i++;
            j--;
        }
    }
        swap(hash[i],hash[high]);
    swap(copyOfWords[i], copyOfWords[high]);



    quickSort(low, j-1);//recursive
    quickSort(j+1, high);

}

}

我知道哈希和copyOfWords中的值是正确的,因为当我使用shell排序时,它对它们进行了正确的排序。例如,如果有两个词,copyOfWOrds="1994“和copyOfWords1="a”,那么hash=549456039和hash1=197000000,但这类词把它们放在1994年,而不是1994年。它用更多的元素造成更多的问题。任何帮助都将不胜感激。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-26 00:10:44

你为什么不去快速排序wiki页面看看它是怎么做的呢?

您的代码试图做一些不必要的事情,并最终跳到自己的脚上。只要简单就行了。

顺便说一句,快速排序在数组上工作得很好,所以制作一个数组是硬编码的版本是件很遗憾的事。

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

https://stackoverflow.com/questions/28731790

复制
相关文章

相似问题

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