LintCode E 鍊錶插入排序

2021-07-25 06:45:59 字數 778 閱讀 1672

鍊錶插入排序

描述 筆記

資料 評測

用插入排序對鍊錶排序

您在真實的面試中是否遇到過這個題? yes

樣例 given 1->3->2->0->null, return 0->1->2->3->null

思路:

首先對照,線性表插入排序

void insertsort(int a,int

len)

}

最初的版本:

/**

* definition of listnode

* class listnode

* }*/class

solution

else q=q->next;

}p=p->next;

}return head;

}};

這裡的錯誤是不應該是直接交換val值,而應該把p插到q之前。

這是因為鍊錶特殊結構,插入不需要o(n),所以直接插入,而不是像線性表一樣,慢慢交換過去。

再次修改:

/**

* definition of listnode

* class listnode

* }*/class

solution

else q=q->next;

}p=p->next;

}return pre->head;

}};

然而還是錯誤的

鍊錶插入排序

void insertsort list sortascount,node node else p prior next q q next p int sortwithinsetmethod list sortasdata wchar pp p data if isnum pp int i 0 i ...

鍊錶插入排序

題目 用插入排序對鍊錶排序 樣例 given1 3 2 0 null,return0 1 2 3 null 思路 新建乙個以dummy開頭的鍊錶,並將dummy賦初值為0。令node dummy,通過移動新煉表中的node與要排序的鍊錶中的head,並比較node與head的值,來實現排序。如果he...

鍊錶插入排序

題目 用插入排序對鍊錶排序 思路 建立乙個新的鍊錶,將目標鍊錶依次插入先煉表中,小就插到前面,大就插到後面,如此一來,新的鍊錶就是目標鍊錶按大小次序排列的了。先看第一步,將目標鍊錶的第乙個元素插入所建立的空鍊錶,具體是先建立乙個地值存下頭節點的下乙個節點的位置,將頭節點的next變為空,連到一開始建...