经典排序算法

下面的几种排序算法都是非常经典的排序算法。

1) 冒泡排序(Bubble Sort)

2) 选择排序(Select Sort)

3) 插入排序(Insert Sort)

void Bubble_Sort(int Arr[], int nLen)
{
	int i = 0;
	int j = 0;
	if (NULL == Arr || nLen <= 0)
	{
		return;
	}
	for (i = 0; i < nLen-1; i++)
	{
		for (j = i+1; j < nLen-i; ++j)
		{
			if (Arr[i] > Arr[j])
			{
				Swap(Arr[i], Arr[j]);
			}
		}
	}
}

  

void Select_Sort(int Arr[], int nLen)
{
	if (NULL == Arr || nLen <= 0)
	{
		return;
	}
	int i = 0;
	int j = 0;
	int nMin;
	for (; i < nLen-1; i++)
	{
		int nMin = i;
		// 这一趟循环里选出最值
		for (j = i+1; j < nLen; j++)
		{
			if (Arr[nMin] > Arr[j])
			{
				nMin = j;
			}
		}
		// 将选出的最值进行交换
		if (nMin != i)
		{
			Swap(Arr[i], Arr[j]);
		}
	}
}

  

void Insert_Sort(int Arr[], int nLen)
{
	if (NULL == Arr || nLen <= 0)
	{
		return;
	}
	// 循环从第二个数组元素开始
	for (int i = 1; i < nLen; i++)
	{
		int nTmp = Arr[i];
		// 从最邻近的一个一直往前查找
		int index = i-1;
		while ((Arr[index] > nTmp)&&(index >= 0))
		{
			// 数据往后迁移
			Arr[index+1] = Arr[index];
			index--;
		}
		Arr[index+1] = nTmp;
	}

}

  

posted @ 2014-01-03 22:00  JasonScor  阅读(232)  评论(0编辑  收藏  举报