C语言 数组排序法总结

//快速排序法
void QuickSort(int *a, int left, int right)
{
	int i = left;
	int j = right;
	int k = a[left];

	if (i >= j)
	{
		return;
	}

	while (i < j)
	{
		while ((i < j) && (k <= a[j]))
		{
			j--;
		}

		a[i] = a[j];

		while ((i < j) && (k >= a[i]))
		{
			i++;
		}

		a[j] = a[i];
	}

	a[i] = k;

	QuickSort(a, left, i-1);
	QuickSort(a, i+1, right);
}

//冒泡排序法
void BubbleSort(int *a, int len)
{
	int i, j, k;

	for (i=0;i<len-1;i++)
		for(j=i+1;j<len;j++)
		{
			if (a[i] > a[j])
			{
				k = a[i];
				a[i] = a[j];
				a[j] = k;
			}
		}
}

//选择排序法
//找出最小值与第一个位置交换,在剩余的找出最小值与第二个位置交换,以此类推
void SelectSort(int *a, int len)
{
	int i, j, k, tmp;
	int m;

	for (i=0;i<len-1;i++)
	{
		tmp = a[i];
		for (j=i+1;j<len;j++)
		{
			if (tmp > a[j])
			{				
				tmp = a[j];
				k = j;
			}
		}
		if (tmp != a[i])
		{
			a[k] = a[i];
			a[i] = tmp;
		}
	}
}

//插入排序法
//从第二个位置起依次将此数插入前面,使前面的数保持排好的顺序
void InsertSort(int *a, int len)
{
	int i, j, k;

	for (i=1;i<len;i++)
	{
		k = a[i];

		for (j=i-1;j>=0;j--)
		{
			if (a[j] > k)
			{
				a[j+1] = a[j];
				a[j] = k;
			}
		}
	}
}


posted @ 2016-09-28 17:35  LeeAaron  阅读(1497)  评论(0编辑  收藏  举报