以单链表为存储结构实现简单选择排序算法
时间: 2023-04-28 17:00:03 浏览: 186
单链表上的简单选择排序算法
5星 · 资源好评率100%
简单选择排序算法的实现步骤如下:
1. 从头节点开始,设当前节点为最小值节点。
2. 遍历链表,找到比当前节点更小的节点,将其设为最小值节点。
3. 将最小值节点与当前节点交换数据。
4. 将当前节点后移一位,重复步骤1-3,直到链表末尾。
具体实现代码如下:
```
void selectionSort(Node* head) {
Node* p = head;
while (p != NULL) {
Node* minNode = p;
Node* q = p->next;
while (q != NULL) {
if (q->data < minNode->data) {
minNode = q;
}
q = q->next;
}
if (minNode != p) {
int temp = p->data;
p->data = minNode->data;
minNode->data = temp;
}
p = p->next;
}
}
```
其中,Node为单链表节点的结构体,包含数据域data和指针域next。函数selectionSort的参数为链表头节点指针。在函数中,p指向当前节点,minNode指向当前节点后面的最小值节点,q用于遍历链表。在遍历过程中,如果找到比minNode更小的节点,则将minNode指向该节点。遍历完链表后,如果minNode不等于p,则交换p和minNode的数据。最后将p后移一位,重复上述步骤,直到链表末尾。
阅读全文