十大排序-选择排序(简单选择排序)

选择排序即简单选择排序
最坏的时间复杂度是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;
	}
}


posted @ 2020-07-20 18:00  Akmf's_blog  阅读(160)  评论(0)    收藏  举报