第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Java 按順序插入數(shù)字到數(shù)組中

Java 按順序插入數(shù)字到數(shù)組中

湖上湖 2023-09-06 15:45:11
我在完成作業(yè)時(shí)遇到問題。我對編碼相當(dāng)陌生,并且很難弄清楚如何做到這一點(diǎn)。我的教授提供了從數(shù)組中添加和刪除項(xiàng)目的代碼,但他希望我們添加一個(gè)方法,將項(xiàng)目添加到數(shù)組的正確位置。這是提供的代碼:import java.util.*;public class MyArrayList {private Object[]buffer;private int currentSize;public MyArrayList(){   final int INITIAL_SIZE=10;  buffer = new Object[INITIAL_SIZE];  currentSize=0;  }public int size() {  return currentSize;  }private void checkBounds(int n){  if (n<0||n>= currentSize){     throw new IndexOutOfBoundsException();     }  }public Object get (int pos){  checkBounds(pos);  return buffer[pos];  }public Object remove(int pos){  checkBounds(pos);  Object removed = buffer[pos];  for (int i = pos+1; i < currentSize; i++){     buffer[i-1] = buffer[i];  }  currentSize--;  return removed;}public boolean add(int pos, Object newElement){  growBufferIfNecessary();  currentSize++;  checkBounds(pos);  for(int i = currentSize - 1; i > pos; i--){     buffer[i] = buffer [i-1];  }  buffer[pos] = newElement;  return true;}public boolean addLast(Object newElement){  growBufferIfNecessary();  currentSize++;  buffer[currentSize -1] = newElement;  return true;} private void growBufferIfNecessary(){  if (currentSize==buffer.length){     Object[] newBuffer = new Object[2*buffer.length];     for(int i=0; i<buffer.length; i++){     newBuffer[i] = buffer[i];     }  buffer = newBuffer;   }} }這是我們的任務(wù):添加一個(gè)名為“public void insert(int n)”的方法,該方法會(huì)將 n 添加到 MyArrayList 對象中保持排序順序的正確位置。使用現(xiàn)有的 MyArrayList 類并進(jìn)行必要的修改。這是一個(gè)測試用例:MyArrayList 列表 = new MyArrayLst();列表.插入(5); 插入(10);插入(8);插入(20);插入(6);如果您現(xiàn)在打印列表,它應(yīng)該打印為:5681020這就是到目前為止我的主要方法中的內(nèi)容: import java.util.*; public class ArrayListHomework { public static void main (String[]args){ MyArrayList list = new MyArrayList(); list.insert(5); list.insert(10); list.insert(8); list.insert(20); list.insert(6); for (int i=0; i<list.size(); i++){     System.out.println(list.get(i));   }  }   }我非常不知道如何啟動(dòng)這個(gè)插入方法。任何幫助,將不勝感激。謝謝。
查看完整描述

2 回答

?
倚天杖

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

可悲的是,不可原諒的是,你的“教授”提供的代碼在add()方法中存在一個(gè)錯(cuò)誤,如下:

public?boolean?add(int?pos,?Object?newElement){
????growBufferIfNecessary();
????currentSize++;
????checkBounds(pos);?
???????//?rest?of?method

因?yàn)?code>checkBounds()不是首先調(diào)用,所以如果pos超出范圍,currentSize將增加(并且緩沖區(qū)不必要地增長),使實(shí)例處于不一致/錯(cuò)誤狀態(tài)。

編碼101:首先檢查參數(shù)。

修理:

public?boolean?add(int?pos,?Object?newElement){
????checkBounds(pos);
????growBufferIfNecessary();
????currentSize++;
????????//?rest?of?method

要回答您的問題,您必須實(shí)現(xiàn)所謂的插入排序。簡而言之,這意味著使用循環(huán)迭代所有元素,并在遇到更大元素或到達(dá)元素末尾時(shí)插入新元素。

請注意,如果您的數(shù)組元素尚未排序,則調(diào)用insert()毫無意義。要處理這種情況,您應(yīng)該考慮拋出IllegalStateExceptionif 元素?zé)o序(您可以在迭代時(shí)檢查前一個(gè)元素是否不大于當(dāng)前元素)。


查看完整回答
反對 回復(fù) 2023-09-06
?
慕哥6287543

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊

不完全像插入排序,因?yàn)橛锌罩档目臻e空間


public void insert( int n ) {

  growBufferIfNecessary();

  for( int i = 0; i < buffer.length; i++ ) {

    if( buffer[i] == null ) {

      buffer[i] = n; currentSize++;

      break;

    }

    else if( buffer[i + 1] != null ) {

      int n1 = ((Number)buffer[i]).intValue();

      int n2 = ((Number)buffer[i + 1]).intValue();

      if( n1 < n && n2 > n ) {

        System.arraycopy( buffer, i + 1, buffer, i + 2, currentSize - i - 1 );  // line 1

        buffer[i + 1] = n; currentSize++;  // line 2

        break;

      }

    }

  }

}

該add()函數(shù)可以替換第 1 行和第 2 行


查看完整回答
反對 回復(fù) 2023-09-06
?
慕田峪4524236

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊

感謝大家的幫助和建議。我通過使用 Marco13 建議的代碼讓它工作: https: //codereview.stackexchange.com/questions/36221/binary-search-for-inserting-in-array#answer-36239 希望每個(gè)人都有美好的一天并快樂編程。-TJ



查看完整回答
反對 回復(fù) 2023-09-06
  • 2 回答
  • 0 關(guān)注
  • 168 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號