码迷,mamicode.com
首页 > 编程语言 > 详细

排序复习

时间:2019-02-20 13:17:33      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:希尔排序   for   快速排序   div   break   i++   shell   bre   bsp   

  直接插入排序:O(N2)

void InsertSort(int *a, int size)
{
	for (int i = 0; i < size - 1; i++)
	{
		for (int j = i + 1; j > 0; j--)
		{
			if (a[j] < a[j - 1])
			{
				int tmp = a[j - 1];
				a[j - 1] = a[j];
				a[j] = tmp;
			}
		}
	}
}

  冒泡排序:O(N2)

void BubbleSort(int *a, int size)
{
	for (int i = 0; i < size; i++)
	{
		for (int j = 1; j < size-i; j++)
		{
			if (a[j] < a[j - 1])
			{
				int tmp = a[j - 1];
				a[j - 1] = a[j];
				a[j] = tmp;
			}
		}
	}
}

  希尔排序 O(N2)  设置步长,优化后的插入排序

void ShellSort(int *a, int size)
{
	int gap = size / 2;
	while (gap >= 1)
	{
		for (int i = 0; i < size; i ++)
		{
			for (int j = i + gap;  j<size; j = j - gap)
			{
				if (a[j] < a[j - gap])
				{
					int tmp = a[j - gap];
					a[j - gap] = a[j];
					a[j] = tmp;
				}
				break;
			}
		}
		gap = gap / 2;
	}
}

  简单选择排序 O(N2) 

void SelectSort(int *a,int size)
{
	for (int i = 0; i < size; i++)
	{
		for (int j = i + 1; j < size; j++)
		{
			if (a[j] < a[i])
			{
				int tmp = a[i];
				a[i] = a[j];
				a[j] = tmp;
			}
		}
	}
}

  快速排序 logN

void QuickSort(int *a, int size)
{
	if (size <=1)
		return;
	//哨兵i 哨兵j
	int first_val = a[0];
	int i = 1, j = size - 1;
	while (i != j)
	{
		//哨兵j开始行动
		while (j > i && a[j] >= first_val)
		{
			j--;
		}

		while (j > i && a[i] < first_val)
		{
			i++;
		}
		if(i<j)
		{
			int tmp = a[i];
			a[i] = a[j];
			a[j] = tmp;
		}
		

		/*for (int k = 0; k < size; k++)
		{
			std::cout << a[k] << std::endl;
		}
		std::cout << "\n";*/
	}
	if (a[0] > a[j])
	{
		int tmp = a[0];
		a[0] = a[j];
		a[j] = tmp;
	}
	

	for (int k = 0; k < size; k++)
	{
		std::cout << a[k] << std::endl;
	}
	std::cout << "\n";
	QuickSort(a, i);
	//这里很重要
	if(i==1)
		QuickSort(a+i, size-i);
	else
		QuickSort(a + i + 1, size - i - 1);
}

  

排序复习

标签:希尔排序   for   快速排序   div   break   i++   shell   bre   bsp   

原文地址:https://www.cnblogs.com/shawnc24/p/10405646.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!