Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 循环优先级队列的插入/排序算法 //给出数组中的下一个索引,该索引环绕在一个环中;在索引中顺时针移动 私有int nextSlot(int k){ 返回((k+1)%A.长度); } //插入法 公共空白插入(int k){ 如果(大小=A.length) 调整大小(); A[下一个]=k; 对于(int i=0;i =i不是确定j是否达到i的正确方法 j--也是错误的,因为j-1需要包装 我试着为家庭作业做这个,这就是为什么我把它实现为一个循环数组。我明白你对第一个for循环所说的。当我将它修改为for(int I=0;I=I to j==I)并创建了一个previousSlot方法来包装j时,当我使用这些更改运行它时,不会再排序任何内容。 for(int i = 0; i < next; i = nextSlot(i)) { for( int j = next - 1; j >= i; j--)_Java_Algorithm_Queue_Priority Queue_Circular Buffer - Fatal编程技术网

Java 循环优先级队列的插入/排序算法 //给出数组中的下一个索引,该索引环绕在一个环中;在索引中顺时针移动 私有int nextSlot(int k){ 返回((k+1)%A.长度); } //插入法 公共空白插入(int k){ 如果(大小=A.length) 调整大小(); A[下一个]=k; 对于(int i=0;i =i不是确定j是否达到i的正确方法 j--也是错误的,因为j-1需要包装 我试着为家庭作业做这个,这就是为什么我把它实现为一个循环数组。我明白你对第一个for循环所说的。当我将它修改为for(int I=0;I=I to j==I)并创建了一个previousSlot方法来包装j时,当我使用这些更改运行它时,不会再排序任何内容。 for(int i = 0; i < next; i = nextSlot(i)) { for( int j = next - 1; j >= i; j--)

Java 循环优先级队列的插入/排序算法 //给出数组中的下一个索引,该索引环绕在一个环中;在索引中顺时针移动 私有int nextSlot(int k){ 返回((k+1)%A.长度); } //插入法 公共空白插入(int k){ 如果(大小=A.length) 调整大小(); A[下一个]=k; 对于(int i=0;i =i不是确定j是否达到i的正确方法 j--也是错误的,因为j-1需要包装 我试着为家庭作业做这个,这就是为什么我把它实现为一个循环数组。我明白你对第一个for循环所说的。当我将它修改为for(int I=0;I=I to j==I)并创建了一个previousSlot方法来包装j时,当我使用这些更改运行它时,不会再排序任何内容。 for(int i = 0; i < next; i = nextSlot(i)) { for( int j = next - 1; j >= i; j--),java,algorithm,queue,priority-queue,circular-buffer,Java,Algorithm,Queue,Priority Queue,Circular Buffer,我试图创建一个insert/sort方法,将值按升序插入到循环优先级队列中。我遇到的问题是,当下一个指针循环回到数组的开头时,队列前面的项没有被排序。我已经为此挣扎了好几个小时了,任何帮助都将不胜感激 具体地说,当下一个循环回到开始时,它将是0,因此这个for循环: // gives next index in array which wraps around in a ring; moves clockwise through indices private int nextSlot(int

我试图创建一个insert/sort方法,将值按升序插入到循环优先级队列中。我遇到的问题是,当下一个指针循环回到数组的开头时,队列前面的项没有被排序。我已经为此挣扎了好几个小时了,任何帮助都将不胜感激

具体地说,当下一个循环回到开始时,它将是0,因此这个for循环:

// gives next index in array which wraps around in a ring; moves clockwise through indices 
private int nextSlot(int k) { 
  return ((k + 1) % A.length); 
} 

// Insert method
public void insert(int k) {
   if( size == A.length)
       resize();
   A[next] = k;
   for(int i = 0; i < next; i = nextSlot(i)) {
       if(k < A[i]) {
           for( int j = next - 1; j >= i; j--){
               A[nextSlot(j)] = A[j];
           }
           A[i] = k;
           break;
       }
   }
   next = nextSlot(next);
   size++;
} 
错误至少有两个原因:

  • j> =i不是确定j是否达到i的正确方法
  • j--也是错误的,因为j-1需要包装

  • 我试着为家庭作业做这个,这就是为什么我把它实现为一个循环数组。我明白你对第一个for循环所说的。当我将它修改为for(int I=0;I=I to j==I)并创建了一个previousSlot方法来包装j时,当我使用这些更改运行它时,不会再排序任何内容。
    for(int i = 0; i < next; i = nextSlot(i)) {
    
    for( int j = next - 1; j >= i; j--)