十大排序-选择排序(简单选择排序)
选择排序即简单选择排序
最坏的时间复杂度是O(\(n^2\)),最好的时间复杂度也是O(\(n^2\)),平均时间复杂度是O(\(n^2\))
没有用到额外的空间 所以空间复杂度是O(1)
选择排序是不稳定的
void selectionsort(vector<int> &a)
{
for(int i = 0 ; i < a.size() - 1; i++)
{
for(int j = i + 1 ; j < a.size() ; j++)
{
if(a[i] > a[j])
{
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
}
基于单链表实现
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
void select(ListNode *head)
{
ListNode *p = head;
while(p != nullptr)
{
ListNode *q = p;
ListNode *r = p->next;
while(r != nullptr)
{
if(r->val < p->val)
{
q = r;
}
r = r->next;
}
int tmp = q->val;
q->val = p->val;
p->val = tmp;
p = p->next;
}
}
保持好奇心!

浙公网安备 33010602011771号