插入排序:在已排好序的序列中,找到當前要排序元素的插入位置即可。如果我們對鍊錶進行排序,我們只需要找到當前插入位置的前乙個指標即可。然後當前元素向前移動一位。//對單向鍊錶進行插入排序
#include#includeusing namespace std;
//鍊錶資料結構
struct listnode
;//在鍊錶末尾追加元素
else
tmp->next = pnew; }}
//正序輸出鍊錶
void show(listnode *phead)
cout << endl;
}listnode *insertionsortlist(listnode *head)
listnode *tmp = p;
p = p->next;
tmp1->next = p;
tmp->next = head;
head = tmp;
continue;
} //指向要插入位置的前乙個指標
listnode *q = head;
while (q->next != p)
//當前元素已在插入的位置,直接移動p即可
if (q->next == p)
else
listnode *tmp = p;
p = p->next;
tmp1->next = p;
tmp->next = q->next;
q->next = tmp;
} }return head;
}int main()
cout << "排序之前的輸出: ";
show(phead);
listnode *head = insertionsortlist(phead);
cout << "排序之後的輸出: ";
對鍊錶進行插入排序
1.問題描述 對鍊錶進行插入排序。插入排序的動畫演示如上。從第乙個元素開始,該鍊錶可以被認為已經部分排序 用黑色表示 每次迭代時,從輸入資料中移除乙個元素 用紅色表示 並原地將其插入到已排好序的鍊錶中。插入排序演算法 插入排序是迭代的,每次只移動乙個元素,直到所有元素可以形成乙個有序的輸出列表。每次...
對鍊錶進行插入排序
對鍊錶進行插入排序。插入排序演算法 插入排序是迭代的,每次只移動乙個元素,直到所有元素可以形成乙個有序的輸出列表。每次迭代中,插入排序只從輸入資料中移除乙個待排序的元素,找到它在序列中適當的位置,並將其插入。重複直到所有輸入資料插入完為止。示例 1 輸入 4 2 1 3 輸出 1 2 3 4 示例 ...
對鍊錶進行插入排序
描述 對鍊錶進行插入排序。插入排序的動畫演示如上。從第乙個元素開始,該鍊錶可以被認為已經部分排序 用黑色表示 每次迭代時,從輸入資料中移除乙個元素 用紅色表示 並原地將其插入到已排好序的鍊錶中。插入排序演算法 插入排序是迭代的,每次只移動乙個元素,直到所有元素可以形成乙個有序的輸出列表。每次迭代中,...