插入排序演算法:
插入排序是迭代的,每次只移動乙個元素,直到所有元素可以形成乙個有序的輸出列表。
每次迭代中,插入排序只從輸入資料中移除乙個待排序的元素,找到它在序列中適當的位置,並將其插入。
重複直到所有輸入資料插入完為止。
方法1:嚴格按照演算法說明,在原始列表中進行操作,利用4個鍊錶指標分別表示當前元素位置,當前元素前乙個元素位置,從頭結點開始第乙個比當前元素大的元素以及該元素前乙個元素的位置。
listnode* solution::insertionsortlist(listnode *phead)
pcurrent = phead->next->next;
precurrent = phead->next;
while(pcurrent != null)
else
}precurrent = pcurrent;
pcurrent = pcurrent->next;
}return phead;
}
此方法提交在xcode環境驗證ok,但提交leetcode顯示超時。
方法2:不在原煉表中進行操作,新建乙個煉表頭對原煉表中的元素進行插入排序
listnode* solution::newinsertionsortlist(listnode *phead)
/*new head to insert*/
listnode *newhead = new listnode(0);
listnode *pcurrent = phead;
while(pcurrent)
/*find pisition to insert*/
pcurrent->next = phead->next;
phead->next = pcurrent;
pcurrent = pnext;
}return newhead->next;
}
Leetcode 147 對鍊錶進行排序
對鍊錶進行插入排序。插入排序演算法 插入排序是迭代的,每次只移動乙個元素,直到所有元素可以形成乙個有序的輸出列表。每次迭代中,插入排序只從輸入資料中移除乙個待排序的元素,找到它在序列中適當的位置,並將其插入。重複直到所有輸入資料插入完為止。示例 1 輸入 4 2 1 3 輸出 1 2 3 4 到了鍊...
LeetCode147 對鍊錶進行插入排序
對鍊錶進行插入排序。插入排序的動畫演示如上。從第乙個元素開始,該鍊錶可以被認為已經部分排序 用黑色表示 每次迭代時,從輸入資料中移除乙個元素 用紅色表示 並原地將其插入到已排好序的鍊錶中。插入排序演算法 插入排序是迭代的,每次只移動乙個元素,直到所有元素可以形成乙個有序的輸出列表。每次迭代中,插入排...
leetcode 147 對鍊錶進行插入排序
對鍊錶進行插入排序 插入排序演算法 插入排序是迭代的,每次只移動乙個元素,直到所有元素可以形成乙個有序的輸出列表。每次迭代中,插入排序只從輸入資料中移除乙個待排序的元素,找到它在序列中適當的位置,並將其插入。重複直到所有輸入資料插入完為止。思路 鍊錶的插入排序,不能像陣列類的插入排序,由後往前找,所...