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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用鏈表進行選擇排序

如何使用鏈表進行選擇排序

紅糖糍粑 2022-10-26 17:00:04
我想我對選擇排序有基本的想法,但由于某種原因它不起作用,我不知道為什么?有人知道這里有什么問題嗎?幾點建議:.getValue() 只返回節(jié)點中的對象,我使用的是整數(shù)。Node tempNode = new Node(null,null,node.getValue()),第一個 null 用于上一個,第二個 null 用于下一個,第三個只是設(shè)置節(jié)點中的對象,在這種情況下為整數(shù)。我的輸入是:9 5 8 6 10 4我的輸出是這樣的。由于某種原因,它一遍又一遍地設(shè)置 4:4 5 5 4 4 4 public void SelectionSort()  {      Node<T> node2;      Comparable temp;      Node<T> Nodemin;      for(Node<T> node = front;node != null; node = node.getNext())      {          Nodemin = node;          for(node2 = node.getNext();node2 != null; node2 = node2.getNext())          {              temp = node.getValue();              if(temp.compareTo(node2.getValue()) > 0)              {                  Nodemin.setValue(node2.getValue());              }               Nodemin = Nodemin.getNext();          }          System.out.println(Nodemin.getValue());          Node<T> tempNode = new Node(null,null,node.getValue());          node.setValue(Nodemin.getValue());          Nodemin.setValue(tempNode.getValue());      }  }
查看完整描述

1 回答

?
慕桂英3389331

TA貢獻2036條經(jīng)驗 獲得超8個贊

當您說Nodemin = Nodemin.getNext();時,您將要交換的項目(所選項目)指向超出最小值的位置。這有一個不需要的副作用,當您進行交換時,您在列表中稍后放置的數(shù)字將超出您正在交換的數(shù)字,我相信。


但是在設(shè)置 Nodemin 的值時存在一個更微妙的缺陷,因為您一直在列表中查找較低的數(shù)字。因為 Nodemin 指向一個特定的位置,所以每次找到一個新的最低元素時,您不僅會更改 Nodemin 的值,還會更改列表中某個項目的值,因為它們指向同一個位置。


我認為您可以通過將 Nodemin 更改為兩個獨立的東西來解決這兩個問題,每個東西都可以滿足您的需求。


讓 minValue 像你的溫度一樣,只跟蹤 minValue。讓 minLocation 始終指向 minValue 所在的位置(永遠不要在其上執(zhí)行下一行,只需將其重置為找到新最小值的位置)。


然后,當在內(nèi)部 for 循環(huán)之外進行交換時,在 minLocation 指向的位置進行交換,并使用值 minValue。


那應(yīng)該解決它?;蛘咚矐?yīng)該可以替換


if(temp.compareTo(node2.getValue()) > 0)

          {

              Nodemin.setValue(node2.getValue());



          } 

          Nodemin = Nodemin.getNext();


if(temp.compareTo(node2.getValue()) > 0)

          {

              Nodemin = node2;



          } 

跟蹤和調(diào)試的建議是好的。你會看到我所說的證據(jù),我相信,并發(fā)現(xiàn)我犯的任何錯誤。


查看完整回答
反對 回復(fù) 2022-10-26
  • 1 回答
  • 0 關(guān)注
  • 122 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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