小编Ale*_*rov的帖子

按字典顺序打印所有排列

我想按字典顺序打印字符串的所有排列.我写这段代码:

void permute(char *a, int i, int n) {
   if (i == (n-1)) printf("\"%s\"\n", a);
   else {
       for (int j = i; j < n; j++) {
           swap((a+i), (a+j));
           permute(a, i+1, n);
           swap((a+i), (a+j));
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

我有例如字符串abc,所以我希望按照左栏中的字典顺序接收所有排列,但我的结果与右列相同.

"abc"                   "abc"
"acb"                   "acb"
"bac"                   "bac"
"bca"                   "bca"
"cab"            <
"cba"                   "cba"
                 >      "cab"
Run Code Online (Sandbox Code Playgroud)

有人可以帮我弄这个吗?我看到了一些算法,但看起来很难.我想我可以在数组中保存所有生成的字符串然后对这个数组进行排序,但是我不能写这个(我是C语言的初学者).

c arrays sorting algorithm permutation

15
推荐指数
2
解决办法
1万
查看次数

用比较器的java heapify方法

我正在努力写一堂课HeapQueue.我将root的左子项存储在 2 * indexOfRoot + 1索引中,并将右子项存储在2 * indexOfRoot + 2.

public class HeapQueue implements PriorityQueue, BinaryHeap {

public List<Task> queue;
public Comparator comparator;

public HeapQueue() {
    queue = new ArrayList();
}

public void setComparator(Comparator comparator) {
    this.comparator = comparator;
    heapify(0);
}

public Comparator getComparator() {
    return comparator;
}

public void offer(Task task) {
    int currentElement, previousElement;
    queue.add(task);
    currentElement = queue.size() - 1;
    previousElement = (currentElement - 1) / 2;
    while (previousElement >= 0 && 
             getComparator().compare(queue.get(currentElement), …
Run Code Online (Sandbox Code Playgroud)

java algorithm heap priority-queue data-structures

6
推荐指数
1
解决办法
1317
查看次数