排序基本算法

选择排序:

vector<int> quick(vector<int> ch)
{		
	int index = 0;
	for (int i = 0; i < ch.size() - 1; ++i)
	{
		index = i;
		for (int j = i + 1; j < ch.size(); ++j)
		{
			if (ch[j] < ch[index])
				swap(ch[j], ch[index]);
		}		
	}	
	return ch;
}

冒泡排序:

vector<int> compare(vector<int> ch)
{
	for (int i = 0; i < ch.size() - 1; ++i)
	{
		for (int j = 0; j < ch.size() - 1 - i; ++j)
		{
			if (ch[j] > ch[j + 1])
				swap(ch[j],ch[j+1]);
		}
	}
	return ch;
}

选择排序一般要优于冒泡排序,因为它需要的交换次数较少。

插入排序:

vector<int> insertsort(vector<int> ch)
{
	for (int i = 1; i < ch.size(); i++)
	{
		if (ch[i - 1] > ch[i])
		{
			int temp = ch[i];
			int j = i;
			while (j > 0 && ch[j - 1] > temp)
			{
				ch[j] = ch[j - 1];
				j--;
			}
			ch[j] = temp;
		}
	}
	return ch;
}

快速排序(用的递归):

void quicksort(vector<int> &vec,int left,int right)
{
	int i = 0, j = 0, temp = 0;
	if (left > right)
		return ;
	temp = vec[left];
	i = left;
	j = right;
	while (i != j)
	{
		while (vec[j]>=temp&&i < j)
			j--;
		while (vec[i]<=temp&&i < j)
			i++;
		if (i < j)
			swap(vec[i],vec[j]);

	}
	swap(vec[left],vec[i]);
	quicksort(vec,left,i-1);
	quicksort(vec, i + 1, right);
	
}

猜你喜欢

转载自blog.csdn.net/qq_40250862/article/details/81582847